Spring boot

(스프링 부트 입문 )POST 방식에 이해 및 실습

mynote6676 2025. 6. 19. 08:58

학습 목표

1. JSON이해

2. POST 주소 맵핑, @RequestBody를 Map 구조로 설정

3. JSON 형식을 만들고 POST 방식으로 데이터 보내기

4. DTO 만들어서 사용해보기

5. @JsonProperty사용해 보기

        - 스네이크 케이스와 카멜케이스 구분

 

POST: 멱동성을 가지지 않는 대표적인 HTTP메서드입니다. 예를 들어 POST/users 로 새로운 사용자를 생성하는 

요청을 여러 번 보내면, 매번 새로운 사용자가 생성됩니다. 즉 같은 요청을 여러 번 보내면 결과가 달라집니다.

 

=============================================================================

 

JSON 데이터 타입 확인

- 문자열 ("name" : "John")

- 숫자  ("age" : 30)

- 불리언 ("isStudent" : false)

- 객체 ( "address": {"city" : "New York", "zipcode" : "10001" })

- 배열 ("hobbies" : ["reading", "traveling", "swimming"])

 - null ( "middleName": null)

 

{
  "name": "John",
  "age": 30,
  "isStudent": false,
  "address": {
    "city": "New York",
    "zipCode": "10001"
  },
  "hobbies": ["reading", "traveling", "swimming"],
  "middleName": null
}

 

|PostApiController 생성

package com.example.demo1.controller;


import com.example.demo1.dto.UserDTO;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Map;

@RestController // IoC 대상이 된다 (프레임워크가 직접 객체 단 하나만 생성 한다)
@RequestMapping("/post") // 해당 컨트롤러 객체의 대문 (공통 주소 사용)
public class PostApiController {

    /**
     * 주소설계
     * POST 방식
     * http://localhost:8080/post/demo1
     * Http body = {"name" : "둘리", "age" : 11}
     */
     @PostMapping("/demo1")
     public String demo1(@RequestBody Map<String, Object> reqData) {
        StringBuffer sb = new StringBuffer();
        reqData.entrySet().forEach( e -> {
            System.out.println("key : " + e.getKey() + " = " + e.getValue());
            sb.append(e.getKey() + "=" + e.getValue());
        });
        return sb.toString();
     }

    /**
     * 주소설계
     * POST 방식
     * http://localhost:8080/post/demo2
     * Http body = {"name" : "둘리", "age" : 11}
     * [Post 는 요청에 본문 있다 - Object로 파싱해보기]
     * DTO -
     */
    @PostMapping("/demo2")
    // 스프링 프레임 워크가 본문에서 값을 읽어서 UserDTO 객체를 생성한다.
    //public String demo2(@RequestBody UserDTO userDto) {
    public UserDTO demo2(@RequestBody UserDTO userDto) {

        System.out.println(userDto);
        System.out.println(userDto.getName());
        System.out.println(userDto.getAge());
        System.out.println(userDto.getPhoneNumber());

        return userDto;
    }


}

 

| 코드 확인

 

@Data
public class Users {

    private Long id;
    private String name;
    private String username;
    private String email;
    private Address address;
    private Company company;

    @Data
    class Address {
        private String street;
        private String suite;
        private String city;
        private String zipcode;
        private Geo geo;

        @Data
        class Geo {
            private String lat;
            private String lng;
        }
    }

    @Data
    class Company {
        private String name;
        private String catchPhrase;
        private String bs;
    }
}
728x90