Post를 posting

개발세발·2024년 1월 10일

POST

  • 리소스를 생성, 추가하는 방법
  • Path Variable을 가진다.
  • DataBody를 가진다.

Data Body

  • Http 통신에는 Header와 Body가 있다.
  • Path Variable과 Query Parameter는 정보가 주소에 노출된다는 단점이 있다. Data Body는 특정한 메시지(문자로 이루어진 형태)를 담을 수 있는데, 주소에 데이터가 노출되지 않기 때문에 GET 방식보다 안전하다.
  • Json으로 가장 많이 Body에 데이터를 담는다.

in Spring

@RestController
@RequestMapping("/api")
public class PostAPIController {
    @PostMapping("/post")
    public String post(
            //default로 객체를 받아야함. Json, Spring boot web은 json이 default
            @RequestBody BookRequest bookRequest //post,put방식에서 바디로 들어오는 데이터를 해당 객체에 맵핑해주겠다.

            ){
        System.out.println(bookRequest);
        return bookRequest.toString();
    }
  • Post 방식은 디폴트로 객체를 받아야한다.

  • @PostMapping을 통해 Post 방식으로 받을 것을 지정해주고, ("/post")로 명시해서 "post"로 들어오는 주소는 여기서 처리하겠다 명시.

  • @RequestBody로 Body로 들어오는 데이터를 해당 객체의 데이터 클래스에 매핑해주겠다 명시. Json과 Spring Boot Web은 json이 디폴트.

  • 객체를 내리면 json 형태로 변환해주고, toString()의 형태로 내리면 플레인 텍스트로 전환해준다.

    @PostMapping("/user")
    public UserRequest user(
            @RequestBody UserRequest userRequest
            ){
        System.out.println(userRequest);
        return userRequest;
    }
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonNaming(value= PropertyNamingStrategies.SnakeCaseStrategy.class)
public class UserRequest {
    private String name;
    private Integer userAge; //int를 사용하면 아무런 값이 없을 때 0으로 표현됨. Integer 사용하면 null
    private String email;

}
  • json을 사용할 때는 레퍼런스 타입을 사용하는 것이 좋다.
  • JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)을 통해 key의 형식을 snake-case로 지정해준다. 그러면 snake case로 들어온 데이터를 해당 클래스들의 변수들에 매핑해준다.

0개의 댓글