PUT, DELETE API

이경영·2022년 10월 12일
0

스프링부트2

목록 보기
10/19

Put API

해당 리소스가 존재하면 갱신하고, 리소스가 없을경우 새로 생성해주는 API
업데이트를 위한 메소드
기본적인 동작방식은 Post API와 동일

Delete API

서버를 통해 리소스를 삭제하기 위해 사용되는 API
일반적으로 @PathVariable을 통해 리소스 ID등을 받아 처리

ResponseEntity

Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스를 상속받아 사용하는 클래스
사용자의 HttpRequest에 대한 응답 데이터를 포함

포함하는 클래스

  • HttpStatus
  • HttpHeaders
  • HttpBody

-- 실습

package com.example.testproject.controller;

import com.example.testproject.dto.MemberDTO;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
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;

import java.lang.reflect.Member;
import java.util.Map;

@RestController
@RequestMapping("/api/v1/put-api")
public class PutController {

    // http://localhost:8080/api/v1/put-api/default
    @PutMapping(value="/default")
    public String putMethod(){
        return "Hello world";
    }

    @PutMapping(value= "/member")
    public String postMember(@RequestBody Map<String, String> postData){
        StringBuilder sb=new StringBuilder();

        postData.entrySet().forEach(map->{
            sb.append(map.getKey() + " : " + map.getValue() + "\n");
        });
        return sb.toString();
    }

    // !!!!! 아래 세가지가 어떠한 차이가 있는지 포인트 !!!!!

    // http://localhost:8080/api/v1/put-api/member1
    @PutMapping(value="/member1")
    public String postMemberDto1(@RequestBody MemberDTO memberDTO){
        return memberDTO.toString();
    }

    // http://localhost:8080/api/v1/put-api/member2
    @PutMapping(value="/member2")
    public MemberDTO postMemberDto2(@RequestBody MemberDTO memberDTO){
        return memberDTO;
    }
    //http://localhost:8080/api/v1/put-api/member3
    @PutMapping(value="/member3")
    public ResponseEntity<MemberDTO> postMemberDto3(@RequestBody MemberDTO memberDTO){
        return ResponseEntity.status(HttpStatus.ACCEPTED).body(memberDTO);
    }

}

com.example.testproject.controller

package com.example.testproject.controller;

import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/v1/delete-api")
public class DeleteController {

    @DeleteMapping(value="/delete/{variavle}")
    public String DeleteVariable(@PathVariable String variable){
        return variable;
    }
}

PUT 예시




:toString으로 가공이 되어 돌아옴.




:Response Body부분이 다름 (json의 형태)




: Code 202 부분 다름
ACCPTED라는 값을 사용했을 경우 200이 아닌 202코드를 사용할 수 있다.



DELETE 코드 예시


:id값으로 데이터를 조회한 후에 삭제하는 방법을 사용해야함.

profile
꾸준히

0개의 댓글