form data 등 전송되는 정보는 model (dto, domain 등 객체로 받을 수 있음) 그외로..
1. 모든 (JSON) payload hashmap으로 받기
@PostMapping("/")
public void index(@RequestBody Map<String, Object> payload) {
System.out.println(payload);
}
2. 모든 Request 정보 확인
@GetMapping("/")
public void index(RequestEntity requestEntity){
System.out.println(requestEntity);
}
RequestEntity는 내부에 field로 method, url, type, headers, body 정보를 가지고 있으며 각 get method를 통해 얻어서 사용 할 수 있다.
=> form data는 처리 못하는 것 같다....?
3. Header, Body 정보 보기
@PostMapping("/")
public String postindex(HttpEntity httpEntity){
System.out.println(httpEntity);
return "index";
}
HttpEntity는 Request Entity 의 부모 객체로 headers 와 body정보를 가지고 있다.
4. ServerHttpRequest
@PostMapping("/")
public void postindex(ServerHttpRequest serverHttpRequest){
System.out.println(serverHttpRequest);
}
ServerHttpRequest (reactive) 객체는 body, header 및 많은 정보를 담고 있으나, body가 buffer의 형태로 그냥 읽을 수는 없었다.
parsing 되기 전의 정보인듯 하다.
file 전송: model 객체 안에 field로 multipartfile 을 가지고 있어도 바인딩 가능함.
5. Part (form file 전송)
@ResponseBody
@PostMapping("/")
public void postindex(@RequestPart Part a){
System.out.println(a);
}
파라미터나 body 에서 처럼 이름을 맞춰야 함.
6. MultiValuMap
@ResponseBody
@PostMapping("/")
public void postindex(@RequestBody MultiValueMap<String, Part> a){
System.out.println(a);
}
map안에 파일과 param 모두를 맏을 수 있음.
Mono나 Flux로 감싸서 받을 수 도 있음.. (debugger로 내용물을 보기가 힘듬)