본문 바로가기
Spring

PUT API

by step 1 2021. 6. 12.
반응형

리소스 갱신/ 생성, 멱등성, Path Variable, DataBody, Query Parameter

 

Json 디자인

{
    "name" : "",
    "age" : ,
    "car_list" : [
    	{
        	"name" : "",
            "car_number" : ""
        },
        {
        	"name" : "",
            "car_number" : ""
        }
    ]
}

 

예제

dto 작성

package com.example.put.dto;

import com.fasterxml.jackson.annotation.JsonProperty;

public class CarDto {

    private String name;
    
    // 받을 JSON key값 직접지정
    @JsonProperty(value = "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 + '\'' +
                '}';
    }
}
package com.example.put.dto;

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

import java.util.List;

// @JsonNaming: JSon에서 SnakeCase로 전달받을 때 해당 데이터를 받을수 있도록 클래스 전체적으로 적용
@JsonNaming(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class PutRequetDto {

    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 "PutRequetDto{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", carList=" + carList +
                '}';
    }
}

controller 작성

package com.example.put;

import com.example.put.dto.PutRequetDto;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class PutApiController {

    @PutMapping("/put")
    public PutRequetDto put(@RequestBody PutRequetDto putRequetDto){

        System.out.println(putRequetDto.toString());

        // RestController를 이용하면 return 데이터가 자동으로 Json형태로 보내진다.
        return putRequetDto;
    }
}

json 작성

{
  "name" : "steve",
  "age" :  20,
  "car_list" : [
  		{
          "name" : "BMW",
          "car_number" : "11가 3333"
		},
        {
          "name" : "A4",
          "car_number" : "22가 3333"
        }
  ]
}

테스트

json 형태로 return 확인

콘솔 확인

PathVariable 사용

    @PutMapping("/put/{userId}")
    public PutRequetDto put(@RequestBody PutRequetDto putRequetDto, @PathVariable(name = "userId") Long id){

        System.out.println(putRequetDto.toString());
        System.out.println(id);

        // RestController를 이용하면 return 데이터가 자동으로 Json형태로 보내진다.
        return putRequetDto;
    }

반응형

'Spring' 카테고리의 다른 글

Response 내려주기  (0) 2021.06.12
Delete API  (0) 2021.06.12
Post API  (0) 2021.06.12
Get API  (0) 2021.06.12
Hello World API 만들기  (0) 2021.06.12