Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

josolha

Spring MVC에서 Consumes와 Produces 본문

Spring

Spring MVC에서 Consumes와 Produces

josolha 2023. 12. 4. 20:55

Consumes와 Produces란?

 

Spring Framework에서 @RequestMapping 또는 그 파생 어노테이션들(@GetMapping, @PostMapping 등)은

HTTP 요청을 특정 메소드에 매핑하는 데 사용된다.

이 때 consumesproduces 속성을 사용하여,

컨트롤러가 처리할 수 있는 요청의 Content-Type과 반환할 수 있는 응답의 Content-Type을 각각 지정할 수 있다.

 


Consumes

  • 용도: 컨트롤러가 처리할 수 있는 요청 본문의 미디어 타입을 지정한다.
  • 디폴트 값: 지정되지 않을 경우, 모든 Content-Type의 요청을 수락한다.
  • 사용 예시:
@PostMapping(path = "/submitData", consumes = MediaType.APPLICATION_JSON_VALUE)
public String submitData(@RequestBody MyData data) {
    // JSON 형식의 데이터 처리 로직
    return "Data processed";
}

이 코드는 JSON 형식의 데이터만을 처리하는 POST 요청을 매핑한다.


Produces

  • 용도: 컨트롤러가 클라이언트에 반환할 응답 본문의 미디어 타입을 지정한다.
  • 디폴트 값: 지정되지 않을 경우, 클라이언트의 Accept 헤더에 따라 다양한 미디어 타입의 응답을 생성할 수 있다.
  • 사용 예시:
@GetMapping(path = "/getData", produces = MediaType.APPLICATION_XML_VALUE)
public MyResponse getData() {
    MyResponse response = new MyResponse();
    // XML 형식의 응답 데이터 설정
    return response;
}

이 코드는 XML 형식의 데이터를 반환하는 GET 요청을 매핑한다.


그럼 왜 사용하는가?

 

  • 명시성: API가 어떤 종류의 데이터를 기대하고 반환하는지 명확하게 정의한다.
    이는 클라이언트 개발자에게 분명한 지침을 제공하고, 올바른 데이터 형식의 전송을 유도한다.

  • 유효성 검증과 에러 핸들링: Spring은 지정된 미디어 타입 외의 요청을 자동으로 거부하고,
    적절한 HTTP 상태 코드로 응답한다. 이는 서버에서 불필요한 요청을 처리하지 않도록 하여 보안과 성능을 향상시킨다.
    ( 415 Unsupported Media Type 로 응답)
  • 코드 가독성과 유지 보수: 명확한 API 정의는 코드의 이해와 유지 보수를 용이하게 한다.

결론

consumes와 produces 속성을 사용함으로써,

Spring MVC 애플리케이션에서 RESTful API를 더 명확하고 안정적으로 설계할 수 있다.

이를 통해 API의 효율성을 높이고, 클라이언트와의 효과적인 데이터 교환을 보장할 수 있다.