Spring MVC(매핑정리)

이영·2023년 10월 20일

참고페이지

프로젝트를 진행하다가 매핑의 종류가 궁금해져서 찾아보았다

정리가 잘 된 블로그가 있어서 정리하며 공부하려 한다

1. @Controller와 @RestController의 차이

둘 다 요청을 매핑하는 컨트롤러.
응답을 할 때에는 View를 반환하기도, 직접 데이터를 반환하기도 함

@Controller매핑을 한 메소드에 @ResponseBody를 붙히면 데이터가 반환.
매핑만 있을 시 뷰가 반환
@RestController자동적으로 @ResponseBody가 메소드에 붙혀져 있어서 데이터가 반환
→ 이번 프로젝트를 진행하며 처음으로 리액트를 사용하게 되었고 뷰를 반환 하는게 아닌 JSON 형태로 값을 반환해 달라는 요청을 받아서 
@RestController를 사용하게 되었는데 이런 이유로 @RestController를 쓰는 것인지 지금 알게되었다
(사용하면서도 @RequestBody를 명시적으로 사용하고 있었는데 메서드에 붙어있어 결국 필요없다는 말이었네 싶다….)

2. Mapping 요청방법

  • HTTP 요청을 매핑하는 방법
    - @GetMapping
    - @PostMapping
    - @PutMapping
    - @DeleteMapping
    - @RequestMapping(values=”/hello”, method={RequestMethod.GET, RequestMethod.PUT}
    (→ 이부분은 블로그에서 옮긴건데 이 메서드는 get도 하고, put도 한다는 것인지 아님 이렇게 쓴다는 걸 보여준다는 것인지 잘 모르겠음….. 나중에 봐야지)

    mapping 종류내용
    @GetMapping- 입력한 데이터를 URL에 붙여서 전송 → 데이터가 다 보임 → 보안에취약
    - 전송할 수 있는 데이터 256바이트 제한
    - 캐싱 가능
    - 동일한 GET요청은 항상 동일한 응답을 보내야함.
    @PostMapping- 입력한 데이터를 본문안에 포함해서 전송(URL에 데이터가 보이지 않음 → GET보다 보안에 우수)
    - 전송할 수 있는 데이터 길이 제한 없음
    - 캐시할 수 없음
    - 동일한 POST요청은 동일한 응답을 보낸다.
    @PutMapping- URI에 해당하는 데이터를 새로 만들거나 수정할 때 사용
    - URI에 보내는 데이터에 해당하는 리소스를 지칭하고, post같은 경우에는 처리할 리소스를 지칭
    - 동일한 put 요청은 동일한 응답을 보낸다
    @PatchMapping- URI에서 자원의 일부를 업데이트
    - 기존 엔티티와 새 데이터만 보냄
    - 동일한 patch요청은 동일한 응답을 보냄
    @DeleteMapping- URI에 해당하는 리소스를 삭제
    - 동일한 delete요청은 동일한 응답을 보낸다.

(→ 캐싱에 대한건 몰라서 또 확인 해야할듯..)

@PutMapping과 @PatchMapping의 차이

put과 patch가 비슷한 것 같아 차이점을 찾아 보았다. 내가 이해한 결론만 기록하자면

  • @PutMapping : 전체 수정 → 잘못 사용하면 수정 후 null값이 들어갈 수도 있다
  • @PatchMapping : 부분 수정 가능 → 원하는 값만 수정이 가능하다
    (→ 지금 이메일 수정에 @PutMapping을 사용한 것으로 기억하는데 열어보고@ PatchMapping으로 바꿔야겠다.)








2023년 7월 28일 오후 7:35
profile
나야나

0개의 댓글