정리가 잘 된 블로그가 있어서 정리하며 공부하려 한다
둘 다 요청을 매핑하는 컨트롤러.
응답을 할 때에는 View를 반환하기도, 직접 데이터를 반환하기도 함
| @Controller | 매핑을 한 메소드에 @ResponseBody를 붙히면 데이터가 반환. 매핑만 있을 시 뷰가 반환 |
|---|---|
| @RestController | 자동적으로 @ResponseBody가 메소드에 붙혀져 있어서 데이터가 반환 |
→ 이번 프로젝트를 진행하며 처음으로 리액트를 사용하게 되었고 뷰를 반환 하는게 아닌 JSON 형태로 값을 반환해 달라는 요청을 받아서
@RestController를 사용하게 되었는데 이런 이유로 @RestController를 쓰는 것인지 지금 알게되었다
(사용하면서도 @RequestBody를 명시적으로 사용하고 있었는데 메서드에 붙어있어 결국 필요없다는 말이었네 싶다….)
| mapping 종류 | 내용 |
|---|---|
| @GetMapping | - 입력한 데이터를 URL에 붙여서 전송 → 데이터가 다 보임 → 보안에취약 - 전송할 수 있는 데이터 256바이트 제한 - 캐싱 가능 - 동일한 GET요청은 항상 동일한 응답을 보내야함. |
| @PostMapping | - 입력한 데이터를 본문안에 포함해서 전송(URL에 데이터가 보이지 않음 → GET보다 보안에 우수) - 전송할 수 있는 데이터 길이 제한 없음 - 캐시할 수 없음 - 동일한 POST요청은 동일한 응답을 보낸다. |
| @PutMapping | - URI에 해당하는 데이터를 새로 만들거나 수정할 때 사용 - URI에 보내는 데이터에 해당하는 리소스를 지칭하고, post같은 경우에는 처리할 리소스를 지칭 - 동일한 put 요청은 동일한 응답을 보낸다 |
| @PatchMapping | - URI에서 자원의 일부를 업데이트 - 기존 엔티티와 새 데이터만 보냄 - 동일한 patch요청은 동일한 응답을 보냄 |
| @DeleteMapping | - URI에 해당하는 리소스를 삭제 - 동일한 delete요청은 동일한 응답을 보낸다. |
(→ 캐싱에 대한건 몰라서 또 확인 해야할듯..)
put과 patch가 비슷한 것 같아 차이점을 찾아 보았다. 내가 이해한 결론만 기록하자면