본문 바로가기
SpringBoot

@RequestMapping의 produces와 consumes

by 판순퐁 2022. 1. 4.

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