학습 목표
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
'Spring boot' 카테고리의 다른 글
(스프링 부트)DELETE 방식에 이해 및 실습 (0) | 2025.06.20 |
---|---|
(스프링 부트 입문)PUT 방식에 이해 및 실습 (0) | 2025.06.20 |
(스프링 부트 기초)GET 방식과 URL 주소 설계 (5) | 2025.06.19 |
(스프링 부트 입문)스프링 부트 간단한 요청과 응답 동작 방식을 알아보자. (0) | 2025.06.19 |
(스프링 부트 입문)머스태치 학습을 위한 프로젝트 - 1 (0) | 2025.06.19 |