API를 작성하는 다양한 방법
HTTP 메서드에 해당하는 API를 개발하고 그 과정에서 필요한 내용들 중
하나인 POST 메서드의 구현에 관하여 자세하게 알아보겠습니다.
POST API
웹 애플리케이션을 통해 데이터베이스 등의 저장소에 리소스를 저장할 때 사용되는 API이다.
GET API와 POST API의 차이점
- GET : URL의 경로나 파라미터에 변수를 넣어 요청을 보낸다.
- POST : 저장하고자 하는 리소스의 값을 HTTP 바디(Body)에 담아 서버에 전달한다. URI가 GET API에 비해 간단하다.
@RestController
@RequestMapping("/sample")
public class SampleController{
}
@RequestMapping으로 구현하기
메서드를 정의할 때, method 요소를 RequestMethod.POST로 설정하는 부분을 제외하면 GET API와 동일하다.
@RestController
@RequestMapping("/sample")
public class SampleController{
@RequestMapping(value = "/test", method = RequestMethod.POST)
public Stirng postExample(){
return "post api";
}
}
@RequestBody를 활용한 POST 메서드 구현
일반적으로 POST 형식의 요청은 클라이언트가 서버에 리소스를 저장하는 데 사용한다. 그러므로 클라이언트의 요청 트래픽에 값이 포함되어 있다. 즉, POST 요청에서는 리소스를 담기 위해 HTTP Body에 값을 넣어 전송한다.
Body 영역에 작성되는 값은 일반적으로 JSON(JavaScript Object Notation) 형식으로 전송된다.
@PostMapping을 사용하면 method 요소를 정의하지 않아도 된다.
@RequestBody라는 어노테이션을 사용한다.
@RequestBody : HTTP의 Body 내용을 해당 어노테이션이 지정된 객체에 매핑하는 역할을 한다.
@RestController
@RequestMapping("/Sample")
public class SampleController {
//http://localhost:8080/Sample/member
@PostMapping(value = "/member")
public String postValue(@RequestBody Map<String, Object> param) {
StringBuilder sb = new StringBuilder();
param.entrySet().forEach(map -> {
sb.append(map.getKey() + " " + map.getValue() + "\n");
});
return sb.toString();
}
}
DTO 객체를 활용한 GET 메서드 구현
@RestController
@RequestMapping("/Sample")
public class SampleController {
//http://localhost:8080/Sample/member
@PostMapping(value = "/member")
public String postMember(@RequestBody MemberDto memberDto) {
return memberDto.toString();
}
}
반응형
'Book > 스프링부트 핵심가이드' 카테고리의 다른 글
PUT 메서드 구현 방법(feat. @PutMapping) (0) | 2023.10.25 |
---|---|
스프링부트 생성 (Feat. Spring Initializr) (2) | 2023.10.25 |
GET 메서드 구현 방법(feat. @GetMapping) (0) | 2023.10.25 |
댓글