[Spring] Mapping의 consumes와 produces 차이

윤재열·2022년 4월 14일
0

Spring

목록 보기
52/72

Mapping을 할 때 받고싶은 데이터를 강제 함으로써 오류 상황을 줄일 수 있습니다.

Consumes

  • 이를 위해 사용하는 것 중 하나가 Media Types입니다.
  • 들어오는 데이터와 나가는 데이터를 정하여 처리할 수 있습니다.
  • 여기서 consumes는 들어오는 데이터 타입을 정의할 때 이용합니다.
  • 예를 들어서 내가 json타입을 받고 싶다면 아래와 같이 처리가 가능합니다.
  • consumes 때문에 에러가 난다면 415 가 발생합니다.
@PostMapping(value="/new" , consumes =MediaType.APPLICATION_JSON_VALUE)
public ResponseENtity<String> create(){
	//....
    }
  • 이렇게 처리를 하게 되면 해당 uri 를 호출하는 쪽에서는 헤더에 보내는 데이터가 json이라는 것을 명시해야 합니다.

Content-Type:application/json

Produces

  • mapping에서 반환하는 데이터 타입을 정의합니다.
  • 예를 들어서 내가 json타입으로 보내고 싶다면 아래와 같이 처리가 가능합니다.
@GetMapping(value="/new", produces =MediaType,APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseBody<String> create(){
	//...
}    
  • 요청하는 입장에서 특정 타입의 데이터를 원한다면 아래와 같은 내용을 헤더에 추가해줍니다.

    Accept:application/json

  • produces 때문에 에러가 발생한다면 406 에러가 발생합니다.

동시에도 사용이 가능한 예

@PostMapping("/new",
	consumes = "application/json",
    produces = { MediaType.TEXT_PLAIN_VALUE {)
public ResponseEntity<BoardDTO> create (@RequestBody BoardDTO dto){
	/...
}    

요약

  • consumes는 클라이언트가 서버에게 보내는 타입을 명시합니다.
  • produces는 서버가 클라이언트에게 반환하는 데이터 타입을 명시합니다.
profile
블로그 이전합니다! https://jyyoun1022.tistory.com/

0개의 댓글