POST

Minseo Kang·2023년 2월 8일
1

Spring Boot

목록 보기
6/27
post-thumbnail

01. POST 메소드 개념


  • 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"
} 


02. POST 메소드 작성


패키지 생성과 클래스 생성
  • controller 패키지 생성

  • controller 패키지 내에 PostApiController 클래스 작성

    @RestController
    @RequestMapping("/api")
    public class PostApiController {  }

메소드 작성

  1. 매개변수로 Map 받기
  • @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);
	});
}

  1. dto 작성 및 Snake case와 Camel case 맵핑
  • 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로 인식


03. 정리


@RestControllerRest API 설정
@RequestMapping리소스를 설정(method로 구분 가능)
@PostMappingPost Resource 설정
@RequestBodyRequest Body 부분 Parsing
@PathVariableURL Path Variable Parsing
@JsonPropertyjson naming
@JsonNamingclass json naming

0개의 댓글