Put API
해당 리소스가 존재하면 갱신하고, 리소스가 없을경우 새로 생성해주는 API
업데이트를 위한 메소드
기본적인 동작방식은 Post API와 동일
Delete API
서버를 통해 리소스를 삭제하기 위해 사용되는 API
일반적으로 @PathVariable을 통해 리소스 ID등을 받아 처리
ResponseEntity
Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스를 상속받아 사용하는 클래스
사용자의 HttpRequest에 대한 응답 데이터를 포함
포함하는 클래스
-- 실습
package com.example.testproject.controller;
import com.example.testproject.dto.MemberDTO;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.lang.reflect.Member;
import java.util.Map;
@RestController
@RequestMapping("/api/v1/put-api")
public class PutController {
// http://localhost:8080/api/v1/put-api/default
@PutMapping(value="/default")
public String putMethod(){
return "Hello world";
}
@PutMapping(value= "/member")
public String postMember(@RequestBody Map<String, String> postData){
StringBuilder sb=new StringBuilder();
postData.entrySet().forEach(map->{
sb.append(map.getKey() + " : " + map.getValue() + "\n");
});
return sb.toString();
}
// !!!!! 아래 세가지가 어떠한 차이가 있는지 포인트 !!!!!
// http://localhost:8080/api/v1/put-api/member1
@PutMapping(value="/member1")
public String postMemberDto1(@RequestBody MemberDTO memberDTO){
return memberDTO.toString();
}
// http://localhost:8080/api/v1/put-api/member2
@PutMapping(value="/member2")
public MemberDTO postMemberDto2(@RequestBody MemberDTO memberDTO){
return memberDTO;
}
//http://localhost:8080/api/v1/put-api/member3
@PutMapping(value="/member3")
public ResponseEntity<MemberDTO> postMemberDto3(@RequestBody MemberDTO memberDTO){
return ResponseEntity.status(HttpStatus.ACCEPTED).body(memberDTO);
}
}
com.example.testproject.controller
package com.example.testproject.controller;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/v1/delete-api")
public class DeleteController {
@DeleteMapping(value="/delete/{variavle}")
public String DeleteVariable(@PathVariable String variable){
return variable;
}
}
:toString으로 가공이 되어 돌아옴.
:Response Body부분이 다름 (json의 형태)
: Code 202 부분 다름
ACCPTED라는 값을 사용했을 경우 200이 아닌 202코드를 사용할 수 있다.
:id값으로 데이터를 조회한 후에 삭제하는 방법을 사용해야함.