KoreaIt Academy/Spring Boot

[Spring Boot] REST 방식 - ResponseEntity을 사용한 댓글 수정(PUT, PATCH) , 삭제(DELETE)

hongeeii 2021. 10. 14.
728x90
반응형

댓글 수정

 

HTTP Method 중에 PUT와 PATCH는 리소스의 업데이트를 의미합니다.

 

리소스를 업데이트 한다는 점에서는 같은 역할을 하는 메소드처럼 보이지만

두개의 요청에는 약간의 차이가 있습니다.

 

PUT : 자원의 전체 수정, 자원 내 모든 필드를 전달해야 함, 일부만 전달할 경우 오류
PATCH : 자원의 일부 수정, 수정할 필드만 전송(자동 주입이 아닌 부분만 수정하는 쿼리문에서 사용)

 

PATCH가 PUT을 담고 있기 때문에 전체를 전달 받아서 전체를 수정하는 상황,

 전체 중 부분만 수정하는 상황 모두 PATCH를 사용하는 것이 좋습니다.

   @RequestMapping(method={RequestMethod.PUT, RequestMethod.PATCH}, value="{rno}" ,
            consumes = "application/json", produces = "text/plain; charset=utf-8")
    public ResponseEntity<String> modify(@RequestBody ReplyVO replyVO, @PathVariable("rno") Long rno) throws UnsupportedEncodingException{

       replyVO.setRno(rno);
       return replyService.modify(replyVO) == 1 ? new ResponseEntity<>(new String("댓글 수정성공".getBytes(),"utf-8"),HttpStatus.OK) :
                                                new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
    }

//mybatis에서의 update문

<update id="update">UPDATE TBL_BOARD_REPLY SET REPLY = #{reply}, UPDATEDATE = SYSDATE WHERE RNO = #{rno} </update>

 

 @PathVariable로 설정한 URI의 rno가 아니라 replyVO.getRno를 할 수있게끔 

replyVO.setRno(rno)를 써 주어야 합니다.

 

 

댓글 삭제

※ DELETE 메소드를 사용합니다.

    @DeleteMapping(value = "{rno}" , produces = "text/plain; charset=utf-8")
    public ResponseEntity<String> remove(@PathVariable("rno") Long rno) throws UnsupportedEncodingException{
       return replyService.remove(rno) == 1 ? new ResponseEntity<>(new String("댓글 삭제 성공".getBytes(),"utf-8"),HttpStatus.OK) :
                                                new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
    }

 

728x90
반응형

추천 글