(Spring/Spring Boot) API PUT / DELETE 메소드 사용 방법

PUT/DELETE 메소드 사용 방법

방법 중요성 CRUD 멱등성 안정화
바꾸다
묻다
범위
데이터 본문
얻다 자원 획득 R(읽기) 영형 영형 영형 영형 엑스
우편 엽서 리소스 생성 및 추가 C(만들기) 엑스 엑스 영형 영형
놓다 리소스 업데이트 및 만들기 C/U(업데이트) 영형 엑스 영형 영형
삭제 리소스 삭제 남성 영형 엑스 영형 영형
머리 헤더 데이터 수집 영형 영형
옵션 지원을 받는 방법 영형
테슬라 반환 요청 메시지 영형
연결하다 프록시 작업을 위해 터널 연결로 변경 엑스

하나. PUT 업데이트(업데이트)

– 컨트롤러: PostApiController

@요청 본문 수정할 내용을 본문으로 받습니다.

@경로 변수 수정을 위한 고유 ID를 받을 수 있습니다.

package com.example.put;

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

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

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

        return postRequestDto;
    }
}

– 클래스(객체): PostRequestDto

@JsonProperty 위에서 설명한 json에서 사용하는 객체 이름을 선언하는 방법 외에,

전체 클래스 선언의 모든 이름을 무언가로 변경하여 확인하는 기능이 있습니다.

@JsonNaming(값 = PropertyNamingStrategy.SnakeCaseStrategy.class)

받은 이름을 스네이크 케이스 클래스로 변경합니다.

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(value = PropertyNamingStrategy.SnakeCaseStrategy.class)
public class PostRequestDto {

    private String name;
    private int age;
    private List<CarDto> carList;

    @Override
    public String toString() {
        return "PostRequestDto{" +
                "name="" + name + "\'' +
                ", age=" + age +
                ", carList=" + 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;
    }
}

– 클래스(객체): carDto

package com.example.put.dto;

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

public class CarDto {

    private String carName;
    @JsonProperty("car_number")
    private int carNumber;

    public String getCarName() {
        return carName;
    }

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

    public void setCarName(String carName) {
        this.carName = carName;
    }

    public int getCarNumber() {
        return carNumber;
    }

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

-결과


2. 삭제 삭제

http://localhost:8010/api/delete/{사용자 ID}?키=값

http://localhost:8010/api/delete/100?account=user100

@DeleteMapping 리소스 설정

삭제 기능의 경우 보통 고유번호를 직접 받아서 사용하거나 파라미터로 받아서 삭제하는 경우가 많습니다.

번호를 얻다 @경로 변수통과, ID 값은 @request 매개변수 로 받아들여

– 컨트롤러: DeleteController

package com.example.delete.controller;

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api")
public class DeleteController {
    @DeleteMapping("/delete/{userId}")
    public void delete(@PathVariable String userId, @RequestParam String account){
        System.out.println(userId);
        System.out.println(account);

        //delete 리소스 삭제, 제거할 값이 이미 없어도 동일하게 200 ok를 반환한다.

} }

– 결과