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 강의 마무리하기
'TIL' 카테고리의 다른 글
TIL) 일정관리 과제 구현 (0) | 2024.11.04 |
---|---|
TIL) 인텔리제이에서 mysql 사용하기 (0) | 2024.11.01 |
TIL) Spring Boot에서 POST API생성 (0) | 2024.10.30 |
TIL) Spring Boot에서 GET API생성 (0) | 2024.10.29 |
TIL) 스프링 부트(Spring Boot)프로젝트 만들기 (0) | 2024.10.28 |