웹 애플리케이션 서버를 통해 데이터베이스 같은 저장소에 존재하는 리소스 값을 업데이트
할때 사용
@RestController
@RequestMapping("/api/v1/put-api")
public class PutController {
@PutMapping("/member")
public String postMember(@RequestBody Map<String,Object> putData){
StringBuilder sb = new StringBuilder();
putData.entrySet().forEach(putdata ->{
sb.append("key: " + putdata.getKey() +" value: " + putdata.getValue()+"\n");
});
return sb.toString();
}
}
스트링을 반환하는 경우와 객체를 반환하는 경우 차이
@RestController
@RequestMapping("/api/v1/put-api")
public class PutController {
@PutMapping("/member1")
public String postMemberDto1(@RequestBody MemberDto memberDto){
return memberDto.toString();
}
@PutMapping("/member2")
public MemberDto postMemberDto2(@RequestBody MemberDto memberDto){
return memberDto;
}
}
String의 경우
Object의 경우
Content-type
이 plain에서 json으로 변경
Request body : http 바디 -> 자바 객체
Response body : java object -> http body
RequestEntity와 ResponseEntity는 HttpEntity
를 상속받아 구현한 클래스
HttpEntity는 헤더
와 바디
로 구성된 HTTP 요청과 응답을 구성하는 역할
HttpEntity 클래스
public class HttpEntity<T>{
private final HttpHeaders headers;
@Nullable
private final T body
...
}
ReponseEntity는 서버에 들어온 요청에 대해 응답 데이터를 구성하여 전달
이는 HttpHeaders
, body
를 가지고 자체적으로 HttpStatus
구현
public class ResponseEntity<T> extends HttpEntity<T>{
private final Object status;
}
PUT 메서드 말고 다른 메서드에서도 사용가능하다!
@RestController
@RequestMapping("/api/v1/put-api")
public class PutController {
@PutMapping("/member1")
public ResponseEntity<MemberDto> postMemberDto(@RequestBody MemberDto memberDto){
return ResponseEntity.status(HttpStatus.ACCEPTED).body(memberDto);
}
}
응답을 내려줄때 ResponseEntity의 구성 요소인 body와 status 활용한것 볼 수 있다
응답코드 202로 변경