Summary :
POST API는 DB에 값을 저장하기 위해, PUT API는 DB에 있는 값을 수정하기 위해 사용함
두 API 모두 Http body에 json을 넣어 값을 전달함
DELETE API는 DB에 있는 값을 삭제하기 위해 사용함
리소스를 식별할 수 있는 간단한 정보만 있어도 되므로 URI로 값을 전달함
🔍 목차
5.3 POST API 만들기
5.3.1 @RequestMapping으로 구현하기
5.3.2 @RequestBody를 활용한 POST 메서드 구현
5.4 PUT API 만들기
5.4.1 @RequestBody를 활용한 PUT 메서드 구현
5.4.2 ResponseEntity를 활용한 PUT 메서드 구현
5.5 DELETE API 만들기
5.5.1 @PathVariable과 @RequestParam을 활용한 DELETE 메서드 구현
📌 5.3 POST API 만들기
- POST API는 데이터베이스에 값을 저장할 때 사용되는 API
- 저장하고자 하는 값을 HTTP 바디(body)에 담아 서버에 전달함
📌 5.3.1 @RequestMapping으로 구현하기
- value="URL", method=RequestMethod.POST 와 함께 작성하면 된다.
@RequestMapping(value="/domain", method = RequestMethod.POST)
public String postExample(){
return "Hello Post API";
}
📌 5.3.2 @RequestBody를 활용한 POST 메서드 구현
- POST는 값을 HTTP Body에 JSON 형식으로 넣어서 전송함
- 이렇게 전송된 json 값은 @RequestBody으로 받을 수 있음
- @RequestBody는 HTTP의 Body 내용을 해당 어노테이션이 지정된 객체에 매핑하는 역할
- 예를들어, 아래와 같은 json 요청이 왔고
- { "username": "test1", "password": "1111", }
- 이를 @RequestBody LoginInfo login 으로 받는다고 하면,
- private String username; private String password; } clss LoginInfo{
- DTO의 필드와 json의 키가 매핑되어서 json의 값이 담긴 dto 객체를 사용할 수 있게 됨
💡 @ResponseBody를 생략할 수 있는 조건 : @RestController
- @RestController 어노테이션이 지정된 클래스는 @ResponseBody를 생략할 수 있음
- @RestController에 @ResponseBody가 포함되어있기 때문
📌 5.4 PUT API 만들기
- PUT API는 DB에 존재하는 값을 수정하기 위해 사용함
- 리소스를 서버에 전달하기 위해 HTTP Body에 값을 넣기 때문에 post api와 방식이 유사함
📌 5.4.1 @RequestBody를 활용한 PUT 메서드 구현
- PUT API는 값을 HTTP Body에 담아 전달하므로 @RequestBody로 값을 받을 수 있음
- 아래 코드처럼 여러 json 객체를 Map<String, Object>로 받을 수도 있음
@PutMapping(value = "/member")
public String post Member(@RequestBody Map<String, Object> putData) {
StringBuilder sb = new StringBuilder();
putData.entrySet().forEach ( e -> {
sb.append(e.getKey() +
});
return sb.toString();
}
- 아래 코드처럼 DTO로 받을 수도 있음
- 이때 DTO로 리턴을 하는데, @RestController가 선언되어있다면 json 형태로, 그렇지 않으면 String 타입으로 반환됨
@PutMapping(value="/member2")
public MemberDto postMemberDto2 (@RequestBody MemberDto memberDto) {
return memberDto;
}
📌 5.4.2 ResponseEntity를 활용한 PUT 메서드 구현
- RequestEntity와 ResponseEntity는 HttpEntity를 상속받아 구현한 클래스
- 그중 ResponseEntity는 응답 데이터를 구성해서 전달하는 역할
- 특히 Header와 Status를 다룰 수 있으므로 헤더와 상태를 직접 설정하는 경우 사용함 (Body는 기본)
- 아래 코드는 빌더 패턴을 이용해서 ResponseEntity를 구성하고, 리턴하는 코드
@PutMapping(value = "/member3")
public ResponseEntity<MemberDto> postMemberDto3(@RequestBody MemberDto memberDto) {
return ResponseEntity
.status(HttpStatus.ACCEPTED) // 202
.body (memberDto);
}
📌 5.5 DELETE API 만들기
- DB에 있는 값을 삭제할 때 사용하는 API
- 리소스를 식별할 수 있는 값을 받아서 DB에 존재하는지 확인 후, 있으면 삭제하는 역할을 수행
- 리소스를 식별할 수 있는 간단한 값만 넘겨받으면 되므로 & 무엇을 삭제하는지 명시적으로 하게 위해
GET 방식과 같이 URI에 값을 넣어 요청을 함
📌 5.5.1 @PathVariable과 @RequestParam을 활용한 DELETE 메서드 구현
@PathVariable을 이용하면 URI에 포함된 값을 받아 로직을 처리할 수 있음
@DeleteMapping(value = "/{variable}")
public String DeleteVariable(@PathVariable String variable) {
return variable;
}
@RequestParam을 이용하면 ? 이후의 쿼리스트링 값도 받을 수 있음
@DeleteMapping (value = "/request1")
public String getRequestParam1 (@RequestParam String email) {
return "e-mail : + email;
}
'Spring Boot > 스프링 부트 핵심 가이드' 카테고리의 다른 글
[SpringBoot] 6.2-5 ORM, JPA, Hibernate, 영속성 컨텍스트 (0) | 2023.08.13 |
---|---|
[SpringBoot] 5.6-7 Swagger와 Logback (0) | 2023.07.30 |
[SpringBoot] 5.2 GET API 만들기 (0) | 2023.07.30 |
[SpringBoot] 2.4-5 디자인 패턴, REST API (0) | 2023.07.30 |
[SpringBoot] 2.1-3 스프링 부트 동작 방식, 레이어드 아키텍처 (1) | 2023.07.23 |