POST 메소드
의미 : 리소스 생성, 추가
CRUD : C
멱등성 : X
안정성 : X
Path Variable : O
Query Parameter : △
Data Body : O
POST 메소드 사전지식
데이터를 주고 받을 때, 주로 xml이나 Json 형태 사용
{
"key" : "value"
}
데이터타입 : string, number, boolean, object {}, array []
Json 사용 규칙 - Snake case / Camel case
Snake case : phone_number (Json에서 주로 사용)
Camel case : phoneNumber (Java에서 주로 사용)
Json 사용 예시
{
"phone_number" : "010-1111-2222",
"age" : 10,
"isAgree" : false,
"account" : {
"email" : "steve@gmail.com",
"password" : "1234"
}
}
{
"user_list" : [
{
"account" : "abcd",
"password" : "1234"
},
{
"account" : "aaaa",
"password" : "1111"
},
{
"account" : "bbbb",
"password" : "2222"
}
]
}
{
"account" : "abcd",
"password" : "1234"
}
controller 패키지 생성
controller 패키지 내에 PostApiController 클래스 작성
@RestController
@RequestMapping("/api")
public class PostApiController { }
메소드 작성
@PostMapping("/주소")
매개변수에 @RequestBody 작성
@PostMapping("/post")
public void post(@RequestBody Map<String, Object> requestData) {
requestData.forEach((key, value) -> {
System.out.println("key : " + key);
System.out.println("value : " + value);
});
}
dto 패키지 및 클래스 작성 및 사용
dto 내 작성한 클래스를 매개변수로 받기
@PostMapping("/주소")
매개변수에 @RequestBody dto클래스 변수명
@PostMapping("/post-request-dto")
public void postRequestDtoFun(@RequestBody PostRequestDto postRequestDto) {
System.out.println(postRequestDto);
}
java에서는 Camel case로 작성, Json에서는 Snake case로 작성
dto 패키지 내 클래스에서 @JsonProperty를 이용해 이를 매칭해줌
@JsonProperty("phone_number")
private String phoneNumber; // phone_number로 인식
@RestController | Rest API 설정 |
@RequestMapping | 리소스를 설정(method로 구분 가능) |
@PostMapping | Post Resource 설정 |
@RequestBody | Request Body 부분 Parsing |
@PathVariable | URL Path Variable Parsing |
@JsonProperty | json naming |
@JsonNaming | class json naming |