이것저것 해보기🌼

[REST API] PUT 다루기 본문

BE/Spring Boot

[REST API] PUT 다루기

realtree 2021. 6. 30. 15:58

PUT을 다루는 방법

(POST와 비슷하다)

 

PUT은 항상 RequestBody가 인자로 들어가야한다.

package com.example.put;

import com.example.put.dto.PostRequestDto;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api")
public class PutApiController {
/* JSON 형식
{
  "name" : "seohee",
  "age" : 26,
  "car_list" : [
        {
            "name" : "Audi",
            "car_number" : "11가 1234"
         },
         {
            "name" : "BMW",
            "car_number" : "22가 1234"
         }
     ]
}
 */
    
    @PutMapping("/put")
    public PostRequestDto put(@RequestBody PostRequestDto postRequestDto){
        System.out.println(postRequestDto);
        return postRequestDto;
    }

    @PutMapping("/put2/{userId}")
    public PostRequestDto put2(@RequestBody PostRequestDto postRequestDto, @PathVariable (name = "userId") Long id){
        System.out.println(id);
        return postRequestDto;
    }
}

 

 

 

이번에는 Dto 클래스와 Car 클래스를 만들어서 그사람이 가진 차 리스트를 object 형식으로 받아올것이다.

 

package com.example.put.dto;

import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;

import java.util.List;

@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class PostRequestDto {

    private String name;
    private int age;

    private List<CarDto> carList;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public List<CarDto> getCarList() {
        return carList;
    }

    public void setCarList(List<CarDto> carList) {
        this.carList = carList;
    }

    @Override
    public String toString() {
        return "PostRequestDto{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", carList=" + carList +
                '}';
    }
}

 

package com.example.put.dto;

import com.fasterxml.jackson.annotation.JsonProperty;

public class CarDto {

    private String name;

    @JsonProperty("car_number")
    private String carNumber;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCarNumber() {
        return carNumber;
    }

    public void setCarNumber(String carNumber) {
        this.carNumber = carNumber;
    }

    @Override
    public String toString() {
        return "CarDto{" +
                "name='" + name + '\'' +
                ", carNumber='" + carNumber + '\'' +
                '}';
    }
}

 

 

주의할 점은 항상 snake case로 annotation 을 시켜주는 것이다.

그렇지 않으면 값을 제대로 받지 못한다.

 

방법:

 

@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)

: 클래스 위에 지정할때

 

@JsonProperty("car_number")
private String carNumber;

: 변수위에 지정할때

'BE > Spring Boot' 카테고리의 다른 글

Response 내려주기  (0) 2021.07.03
[REST API] DELETE 다루기  (0) 2021.06.30
[REST API] POST 다루기  (0) 2021.06.30
[REST API] GET 다루기  (0) 2021.06.30
웹 개발 개론  (0) 2021.06.30