GET 방식의 요청에 이어 POST 방식의 요청을 다룬다.
POST 요청은 주로 리소스를 생성, 추가하는 역할을 한다.
HTTP 헤더에 많은 내용이 들어가는 것은 데이터를 공개하는 것과 다름이 없기 때문에 body 부분에 정보를 담아 암호화할 수 있어야 한다.
@RestController
@RequestMapping("/api")
public class PostApiController {
@PostMapping("/post")
public BookRequest post(
@RequestBody BookRequest bookRequest
){
System.out.println(bookRequest);
return bookRequest;
}
}
이같이 작성하게 되면 localhost:8080/api/post에 요청되는 정보로
bookResquest 변수가 전달되는데, 간단한 VO를 구성하고 있다.
@Data
@AllArgsConstructor
@NoArgsConstructor
public class BookRequest {
private String name;
private String number;
private String category;
}
@Data 어노테이션은 setter와 getter, toString 메소드와 equals 메소드와 같이 class의 필드에 대한 메소드를 한번에 생성해준다.
특정 파라미터와 함께 사용할 수 없으므로 개별 어노테이션을 명시하는 것은 찾아보면 되겠다.
기본적으로 json 데이터를 요청하게 되므로 요청한 json key와 네이밍 케이스가 다르면 응답을 받지 못한다.
@JsonNaming(value = PropertyNamingStrategies.SnakeCaseStrategy.class)
클래스에 해당 어노테이션을 달아주면 json한정 Snake case 요청을 Camel case로 매핑시킬 수 있다.

대신 response는 요청한 케이스로 나오게된다.