새소식

인기 검색어

개인공부/SPRING

consumes와 produces의 차이

  • -

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

요약정리 :

  1. consumes는 클라이언트가 서버에게 보내는 데이터 타입을 명시한다.
  2. produces는 서버가 클라이언트에게 반환하는 데이터 타입을 명시한다.

'개인공부 > SPRING' 카테고리의 다른 글

프로젝트 하면서 알아낸것  (1) 2022.10.18
[Spring] @Controller와 @RestController 차이  (1) 2022.10.15
[Spring] Spring MVC: Controller return 타입  (0) 2022.10.13
[Spring] @Autowired DI 정리  (0) 2022.10.13
MyBatis 설정  (0) 2022.10.10
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.