[Spring] PUT API 작성

WOOK JONG KIM·2022년 10월 25일
0
post-thumbnail
post-custom-banner

PUT API 만들기

웹 애플리케이션 서버를 통해 데이터베이스 같은 저장소에 존재하는 리소스 값을 업데이트 할때 사용

@Request 사용

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

    @PutMapping("/member")
    public String postMember(@RequestBody Map<String,Object> putData){
        StringBuilder sb = new StringBuilder();
        putData.entrySet().forEach(putdata ->{
            sb.append("key: " + putdata.getKey() +" value: " + putdata.getValue()+"\n");
        });
        return sb.toString();
    }
}


DTO 사용

스트링을 반환하는 경우와 객체를 반환하는 경우 차이

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

    @PutMapping("/member1")
    public String postMemberDto1(@RequestBody MemberDto memberDto){
        return memberDto.toString();
    }
    
    @PutMapping("/member2")
    public MemberDto postMemberDto2(@RequestBody MemberDto memberDto){
        return memberDto;
    }
}

String의 경우

Object의 경우

Content-type 이 plain에서 json으로 변경

Request body : http 바디 -> 자바 객체
Response body : java object -> http body


ResponseEntity를 활용한 PUT 메서드 구현

RequestEntity와 ResponseEntity는 HttpEntity를 상속받아 구현한 클래스

HttpEntity는 헤더바디로 구성된 HTTP 요청과 응답을 구성하는 역할

HttpEntity 클래스

public class HttpEntity<T>{
	
    private final HttpHeaders headers;
    
    @Nullable
    private final T body
    
    ...
}

ReponseEntity는 서버에 들어온 요청에 대해 응답 데이터를 구성하여 전달

이는 HttpHeaders, body를 가지고 자체적으로 HttpStatus구현

public class ResponseEntity<T> extends HttpEntity<T>{

	private final Object status;
    
}

PUT 메서드 말고 다른 메서드에서도 사용가능하다!

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

    @PutMapping("/member1")
    public ResponseEntity<MemberDto> postMemberDto(@RequestBody MemberDto memberDto){
        return ResponseEntity.status(HttpStatus.ACCEPTED).body(memberDto);
    }
}

응답을 내려줄때 ResponseEntity의 구성 요소인 body와 status 활용한것 볼 수 있다

응답코드 202로 변경

profile
Journey for Backend Developer
post-custom-banner

0개의 댓글