본문 바로가기

Back-end/Springboot

[SpringBoot] PUT API 만들기

PUT API

웹 어플리케이션 서버를 통해 데이터 베이스 같은 저장소에 존재하는 리소스 값을 업데이트 하는 데 사용한다. 구현은 POST API와 거의 동일하다.

 

1. @RequestBody를 활용한 PUT 메서드 구현

PUT API는 POST 메서드와 마찬가지로 값을 HTTP Body에 담아 전달한다. 서버에서는 이 값을 받기 위해 @RequestBody를 사용한다.

@RestController
@RequestMapping("/api/v1/put-api")
public class PutController {
    // http://localhost:8080/api/v1/put-api/member
    @PutMapping("/member")
    public String postMember(@RequestBody Map<String, Object> putData) {
        StringBuilder sb = new StringBuilder();
        putData.entrySet().forEach(map -> {
            sb.append(map.getKey() + " : " + map.getValue() + "\n");
        });
        return sb.toString();
    }
}

@RequestBody를 활용한 PUT 메서드 구현

 

2. DTO 객체를 활용한 PUT 메서드 구현

member1은 String형으로 반환하는 메서드이고 member2는 DTO 객체 타입을 반환한다. 첫 번째는 toString 메서드로 인해 형식이 갖춰져 전달됐지만 HEADERS 항목의 content-type을 보면 'text/plain'으로 일반 문자열이 전달 됐음을 확인 할 수 있고, 두 번째는 HEADERS 영역의 Content-Type 항목이 application/json형식으로 전달됨을 알 수 있다. @RestController 어노테이션이 지정된 클래스는 @ResponseBody를 생략할 수 있는데 이 어노테이션은 자동으로 값을 JSON과 같은 형식으로 변환하여 전달하는 역할을 수행한다.

@RestController
@RequestMapping("/api/v1/put-api")
public class PutController {
    // http://localhost:8080/api/v1/put-api/member1
    @PutMapping("/member1")
    public String postMemberDto(@RequestBody MemberDto memberDto) {
        return memberDto.toString();
    }
    // http://localhost:8080/api/v1/put-api/member2
    @PutMapping("/member2")
    public MemberDto postMemberDto2(@RequestBody MemberDto memberDto) {
        return memberDto;
    }
}

String을 반환하는 메서드
DTO를 반환하는 메서드

 

3. ResponseEntity를 활용한 PUT 메서드 구현

스프링 프레임워크에는 HttpEntity라는 클래가 있는데 헤더와 바디로 구성된 HTTP 요청과 응답을 구성하는 역할을 수행한다.

@RestController
@RequestMapping("/api/v1/put-api")
public class PutController {
    // 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);
    }
}

@ResponseEntity를 활용한 PUT 메서드 구현

RequestEntity와 ResponseEntity는 HttpEntity를 상속받아 구현한 클래스이다. 그 중 ResponseEntity는 HttpEntity로부터 HttpHeaders와 Body를 가지고 자체적으로 HttpStatus를 구현한다. 이 클래스를 활용하면 응답 코드 변경은 물론 Header와 Body를 더욱 쉽게 구성할 수 있다.

 

 

 

 

참고 문헌: 스프링 부트 핵심 가이드(스프링 부트를 활용한 애플리케이션 개발 실무)

http://www.yes24.com/Product/Goods/110142898

 

스프링 부트 핵심 가이드 - YES24

입문자의 눈높이에 맞춰 차근차근 따라 하면서 배우는 스프링 부트 입문서!《스프링 부트 핵심 가이드》는 스프링 부트 기반의 애플리케이션을 개발할 때 필요한 기초적인 내용들을 소개하고,

www.yes24.com

 

'Back-end > Springboot' 카테고리의 다른 글

[SpringBoot] 스웨거(Swagger)  (0) 2023.05.04
[SpringBoot] DELETE API 만들기  (0) 2023.05.03
[SpringBoot] POST API 만들기  (0) 2023.05.03
[SpringBoot] GET API 만들기  (0) 2023.05.02
[SpringBoot] Hello World 출력하기  (0) 2023.05.02