본문 바로가기

TIL

TIL) Spring Boot에서 PUT, DELETE API 생성

0. Spring Boot에서 PUT, DELETE API를 생성하고 controller에 적용하기

1. put controller작성

 put controller을 생성 할 때, 클래스 위에 다음과 같은 어노테이션을 작성합니다.

@RestController
@RequestMapping("api/v1/put-api")

 

@RestController는 이 클래스가 controller라는 것을 명시해줍니다 .또한 @RequestMapping("api/v1/put-api")는 이 api로 들어오는 API 주소를 명시해 준 것입니다. 즉, 다음주소로 접속할 수 있습니다.

http://localhost:8080/api/v1/put-api

 

이 컨트롤러에서 put메소드를 매핑하는 방법은 다음과 같습니다.

@PutMapping(value = "/putmapping")

 

 

2.PutController에서 request받기

 put메소드 역시 request body에서 request를 받을 수 있습니다. put 메소드 역시 JSON형태로 전달하게 됩니다. 이때, request body는 Map형태와 DTO형태로 받을 수 있습니다. 우선 Map형태로 request body를 받는 방법은 다음과 같습니다.

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

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

  return sb.toString();
}

 

위와 같은 방법으로 request body를 putData에 매개변수로 대입받을 수 있습니다.

 

 DTO를 생성하여 request body를 DTO에 저장하는 방식으로 전달받을 수 있습니다.

이번 TIL에서 사용될 DTO는 다음과 같습니다.

@Setter
@Getter
public class MemberDTO{
  private String name;
  private String email;
  private String organization;

  @Override
  public String toString() {
    return "MemberDTO{" +
        "name='" + name + '\'' +
        ", email='" + email + '\'' +
        ", organization='" + organization + '\'' +
        '}';
  }
}

 

lombok의 Getter와 Setter를 이용하여 DTO를 작성하였습니다.

memberDTO를 이용하여 request body를 전달받는 코드는 다음과 같습니다.

@PutMapping(value = "/member1")
public String postMemberDto1(@RequestBody MemberDTO memberDTO){
  return memberDTO.toString();
}

 

위 코드는 memberDTO를 입력받아서 String으로 반환하는 메소드입니다. 이와 비슷하게 memberDTO를 입력받아서 memberDTO를 반환하는 코드는 다음과 같습니다.

@PutMapping(value = "/member2")
public MemberDTO postMemberDto2(@RequestBody MemberDTO memberDTO){
  return memberDTO;
}

 

밑에 코드는 memberDTO를 입력받아 memberDTO를 반환하는 차이가 있습니다.

 

3. Delete Controller작성

 Delete Controller를 작성 할 때, 클래스 위에 다음과 같은 어노테이션을 작성합니다.

@RestController
@RequestMapping("/api/v1/delete-api")

 

 @RestController는 이 클래스가 controller라는 것을 명시해줍니다. 또한 @RequestMapping("/api/v1/delete-api")는 이 api로 들어오는 API 주소를 명시해 준 것입니다. 즉, 다음 주소로 접속할 수 있습니다.

http://localhost:8080/api/v1/delete-api

 

 이 컨트롤러에서 delete메소드를 매핑하는 방범은 다음과 같습니다.

@DeleteMapping(value = "/delete/{variable}")

 

 

 4. DeleteController에서 request받기

 delete메소드는 request를 url에서 param으로 받아올 수 있습니다. 

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

 

 이때, @DeleteMapping의 {variable}과 @PathVariable의 variable의 변수명이 같아야 합니다. 위의 설명한 방법으로 variable을 받아서 delete메소드를 작동할 수 있습니다.

 

5. 내일 해야하는 것

  • Spring 강의 과제하기
  • 개인 과제 시작하기
  • Spring 강의 마무리하기