Spring & Spring boot

[Spring Boot] Rest Controller - 3. POST

jh4dev 2024. 7. 24. 15:14
<목차>

1. Http Method POST
2. Post Controller

 

[Http Method POST]

클라이언트가 서버에 데이터를 전송하는 데 사용되는 주요 HTTP Method 로 폼 제출, 데이터 업로드, 새로운 리소스 생성 등 다양한 상황에서 사용된다.

  • POST API 에서는 저장하려는 리소스나 값을 HTTP Body에 담아 서버로 전송한다.
  • 요청 데이터는 주로 form-data, JSON, XML 등이 있다.
  • POST Request는 상태를 유지하지 않으며, 서버는 요청을 받을 때마다 데이터를 처리한다.
  • 새로운 리소스를 생성하는데 사용될 수 있으며, 요청으로 받은 데이터를 생성하는 위치는 서버가 결정한다.

[Post Controller]

 

  • GET 컨트롤러에서 작성한 내용과 동일하게, @RequestMapping 어노테이션으로 컨트롤러를 작성할 수는 있으나,
    @PostMapping 을 권장한다.
  • 아래에서, @PostMapping 컨트롤러에 대해 알아보자.

 

  • @RequestBody 를 활용한 컨트롤러
    • @RequestBody : HTTP Body 내용을 지정된 객체에 매핑하는 역할을 한다.
    • 마찬가지로, 불특정 파라미터를 처리하기 위해 Map 을 사용할 수 있으며, 정해진 데이터를 받는 용도로 DTO를 사용할 수도 있다.
    /**
     * PostMapping
     * 1) RequestBody 어노테이션을 활용한 POST 메서드
     * Map 활용
     * */
    @PostMapping(value = "/member")
    public String postMemberMap(@RequestBody Map<String, Object> postData) {
        StringBuilder builder = new StringBuilder();
        postData.entrySet().forEach(entry -> builder.append(entry.getKey()).append(" : ").append(entry.getValue()));

        return builder.toString();
    }

    /**
     * PostMapping
     * 1) RequestBody 어노테이션을 활용한 POST 메서드
     * Dto 활용
     * */
    @PostMapping(value = "/member2")
    public String postMemberDto(@RequestBody MemberDto member) {
        return member.toString();
    }

  • POST API는 시스템 입장에서 데이터의 생성을 담당하기에 중요한 부분을 차지하나, 컨트롤러 자체는 크게 복잡하지 않다.
  • 또한, 데이터 생성에 대한 성공/실패 판단을 위해, 정해진 Response 형태의 '결과 코드', '결과 메시지'  를 구성하거나,
    HTTP Status 코드로 판단하기도 한다.

 

 

 

[참고 도서]

 

<스프링 부트 핵심 가이드>
저자 : 장정우

출판사 : 위키북스