[Spring] REST API - POST

개발log·2024년 3월 16일

Spring

목록 보기
2/16
post-thumbnail

Post

데이터를 HTTP 요청의 바디(body)에 담아서 전송하는 방법

  • JSON 또는 XML 형식으로 데이터를 담아서 보낼 수 있다.

Json

key:value의 형태

  • snake case(ex. user_name)와 camel case(userName) 사용
  • snake case 사용 시 @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) 추가해야 한다.

Json에서 다룰수 있는 데이터

  • string 문자
  • number 숫자(소숫점, int, double, float)
  • boolean true/false
  • { } Object
  • [ ] array 배열 안의 객체는 같은 자료형만 가능
{
  "key": "value",
  "array": [
    10,20,30 //같은 자료형만 가능
    ],
  "stringArray": [ //문자열 배열
    "홍길동", "자바", "스프링"
  ],
  "objectArray": [//object 안에 array 가능
    {
      "name": "홍길동"
    },
    {
      "name": "자바"
    },
    {
      "name":"스프링"
    }

  ]
}

⭐ 관련 어노테이션

  • @RestController REST 컨트롤러, 모든 메서드는 HTTP 응답을 통해 데이터 반환
  • @RequestMapping URL 매핑
  • @PostMapping Post 요청에 대한 매핑, 요청을 처리할 때 해당 요청의 데이터를 객체로 변환하여 처리해야 함
  • @RequestBody Post, Put 방식에서 HTTP Body로 들어오는 데이터를 자바 객체로 매핑
  • @Data 해당 클래스가 가지고 있는 메서드 자동 생성
  • @AllArgsConstructor 전체 파라미터를 가지고 있는 생성자 생성
  • @NoArgsConstructor 기본 생성자 생성
  • @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
    요청이 snake case로 들어오면 자동적으로 해당 클래스의 변수들을 snake case로 매핑

예제

PostApiController

package com.example.restapi.controller.restapi.controller;

import com.example.restapi.model.BookRequest;
import com.example.restapi.model.UserRequest;
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;

@RestController // REST 컨트롤러, 모든 메서드는 HTTP 응답을 통해 데이터 반환
@RequestMapping("/api") // URL 매핑
public class PostApiController {

    @PostMapping("/user") // Post 요청에 대한 매핑
    //Post 방식은 요청을 처리할 때, 해당 요청의 데이터를 객체로 변환하여 처리해야 함
    public UserRequest post(@RequestBody UserRequest userRequest){
        // RequestBody: Post, Put 방식에서 HTTP Body로 들어오는 데이터를 자바 객체로 매핑
        System.out.println(userRequest);
        return userRequest;

    }
}

UserRequest

package com.example.restapi.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data // 해당 클래스가 가지고 있는 메서드 자동 생성
@AllArgsConstructor // 전체 파라미터를 가지고 있는 생성자 생성
@NoArgsConstructor // 기본 생성자 생성
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
//요청이 snake case로 들어오면 자동적으로 해당 클래스의 변수들을 snake case로 매핑
public class UserRequest {
    private String name;
    private String number; //snake case로 int 사용 시 Integer로 변경
    private String email;
}

결과

Json 형태로 BODY에 데이터를 보내었고, 잘 받아와지는 것을 확인할 수 있다.

camel case 사용

snake case 사용

profile
나의 개발 저장소

0개의 댓글