Consumes
소비 가능한 미디어 타입의 목록을 지정해서 주요한 매핑을 제한할 수 있다.
Content-Type 요청 헤더가 consumes에 지정한 미디어타입과 일치할 때만 요청이 매칭할 것이다.
예를 들면 다음과 같다.
@RestController
@RequestMapping(value = "example2", method = RequestMethod.GET, consumes = "applcation/json")
public String example2(){
return "example2";
즉, 들어오는 데이터 타입을 정의할때 이용한다.
예를 들어서 내가 json타입을 받고 싶다면 아래와 같이 사용.
//추가 - post
@Operation(summary = "회원 추가", description= "[회원 추가]")
@PostMapping(value="memberInsert", consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Member insertMember(@RequestBody Member member) {
logger.info("member {}" member);
return memberService.inseertMember(member);
}
*consumes는 Content-Type이 consumes에 명시한 media-type과 같아야한다.
*content-type : client가 보내는 content의 타입
Produces
생산가능한 미디어 타입의 목록을 지정해서 주요 매핑을 제한할 수 있다. Accept 요청헤더가 이러한 값 중 하나와 일치할 때만 요청이 매칭될 것이다. 게다가 produces 상태를 사용하면 produces 조건에 지정한 미디어 타입과 관련된 응답을 생성하는데 사용한 실제 컨텐트 타입을 보장한다. 예를 들면 다음과 같다.
@RestController
@RequestMapping(value = "/example", method = RequestMethod.GET, produces = "application/json")
public String example() {
return "example";
}
즉, 반환하는 데이터 타입을 정의한다. 아래와 같을 경우 반환 타입이 json으로 강제된다.
//수정 - put
@Operation(summary = "회원 수정", description = "[회원 수정]")
@PutMapping(value = "memberInsert", produces = {"applicaiton/json"})
public @ResponseBody Member updateMember(@RequestBody Member member){
logger.info("member {} {} ", member, member.getMemberaddress());
return memberService.updateMember(member);
}
*produces는 Accept Header가 produces에 명시한 MediaType과 같을 때에 해당 type으로 Response를 보내준다.
*accept : client가 backend 서버에게 어떤 형식(MediaType)으로 달라고 하는 요청의 방식
(ex. json 방식으로 주세요 => Accept : application/json)
'SpringBoot' 카테고리의 다른 글
Swagger annotation (0) | 2022.01.12 |
---|