Mapping을 할때 우리는 받고싶은 데이터를 강제를 함으로써 오류상황을 줄일 수 있다.
이걸 위해 사용하는 것 중 하나가 Media Types이다.
들어오는 데이터와 나가는 데이터를 정하여 처리를 할 수 있다.
consumes는 들어오는 데이터 타입을 정의할때 이용한다.
예를 들어서 내가 json타입을 받고 싶다면 아래와 같이 처리가 가능하다.
@PostMapping(path = "/pets", consumes = MediaType.APPLICATION_JSON_VALUE)
public void addPet(@RequestBody Pet pet) {
// ...
}
이렇게 처리를 하게되면 해당 uri를 호출하는 쪽에서는 헤더에 보내는 데이터가 json이라는 것을 명시해야 한다.
Content-Type:application/json
아직 나는 사용해보지는 않았지만 부정형 또한 지원한다.
공식문서에 보면 아래와 같이 적혀있다.
The `consumes` attribute also supports negation expressions — for example, `!text/plain` means any content type other than `text/plain`.
produces는 반환하는 데이터 타입을 정의한다.
@GetMapping(path = "/pets/{petId}", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public Pet getPet(@PathVariable String petId) {
// ...
}
이럴 경우 반환 타입이 json으로 강제된다.
내가 보내야 하는 타입이 정해져 있다면 해당 부분을 정의하면 된다.
요청하는 입장에서 특정 타입의 데이터를 원한다면 아래와 같은 내용을 헤더에 추가한다.
Accept:application/json
요약정리 :
- consumes는 클라이언트가 서버에게 보내는 데이터 타입을 명시한다.
- produces는 서버가 클라이언트에게 반환하는 데이터 타입을 명시한다.
'프레임워크 > Spring' 카테고리의 다른 글
[Spring] Header에서 데이터 가져오기 @RequestHeader (0) | 2021.04.23 |
---|---|
[Spring] Parameter에서 데이터 가져오기 @RequestParam (0) | 2021.04.22 |
[Spring] URI patterns는 무엇인가? (0) | 2021.04.20 |
[Spring] @RequestMapping이란? (0) | 2021.04.08 |
[Spring] @Controller와 @RestController의 차이 (0) | 2021.04.07 |
댓글