*<스프링 부트 핵심 가이드>에 나온 내용을 실습해보는 포스팅입니다.
POST API는 클라이언트가 서버로 데이터를 전송할 때 사용하는 API이다. RESTful API에서 HTTP 요청 방식 중 POST 메서드를 사용하여 데이터를 생성하거나 처리할 때 활용된다.
✔️ @RequestBody는 클라이언트가 보낸 JSON, XML 등의 데이터를 Java 객체로 변환(매핑)해주는 어노테이션이다.
✔️ Spring Boot에서 POST, PUT 요청의 Body 데이터를 컨트롤러에서 받을 때 사용된다.
package com.springboot.api.controller;
import java.util.Map;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.springboot.api.dto.MemberDTO;
@RestController
@RequestMapping("/api/v1/post-api")
public class PostController {
// 요청을 통해 어떤 값이 들어올지 모를 때 Map 사용
@PostMapping("/member")
public String postMember(@RequestBody Map<String, Object> postData) {
StringBuilder sb = new StringBuilder();
postData.entrySet().forEach(map -> {
sb.append(map.getKey() + " : " + map.getValue() + "\n");
});
return sb.toString();
}
// 요청 메시지에 들어갈 값이 정해져 있을 때 DTO 사용
@PostMapping("/member2")
public String postMemberDTO(@RequestBody MemberDTO memberDTO) {
return memberDTO.toString();
}
}
BODY에 값도 넣어 전송해줘야 한다.
{
"name": "Flature",
"email": "glature@gmail.com",
"organization" : "hub studio"
}
key와 value 값이 잘 전송되었다.
위의 /member와 마찬가지로 BODY에 값을 넣어준다.
MemberDTO를 썼기 때문에 응답의 형태는 다르지만 잘 전송됐다.