순서
1. HTTP 메소드 종류
2. @RequestMapping
3. @RequestMapping vs @GetMapping, @PostMapping, ...
✅ HTTP 메소드
- 서버와 클라이언트 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식을 정의하는데 사용
- 요청을 보낼 때 서버가 수행해야 하는 동작을 지정해줌
➤ 주요 메소드
GET : 서버로부터 데이터를 조회
POST : 서버에 데이터를 추가, 작성
PUT : 서버의 데이터를 갱신, 작성
PATCH : 리소스의 일부분을 수정
DELETE : 서버의 데이터를 삭제
**PUT은 전체 변경, PATCH는 일부만 변경
✅ @RequestMapping
- 특정 url로 요청을 보내면 컨트롤러에서 특정 HTTP 메소드와 매핑하기 위해 사용
➤ 주요 속성
- value = 요청받을 url
- method = 매핑할 HTTP 메소드
- 사용 예시
@RequestMapping(value = "/get-url", method = RequestMethod.GET)
public String test(HttpServletRequest request) {
....
}
@RequestMapping(value = "/get-post-url", method = {RequestMethod.GET, RequestMethod.POST})
public String test(HttpServletRequest request) {
....
}
✅ @RequestMapping vs @GetMapping, @PostMapping, ...
- 스프링 버전이 올라가면서 @GetMapping과 @PostMapping 등 새로운 어노테이션이 등장
- "새로운 어노테이션을 사용했을 때"를 기준으로 차이점을 살펴보자
1. 코드가 짧아짐
@RequestMapping(value="/test", method=RequestMethod.GET)
→ @GetMapping("/test")
2. 다른 동작을 수행하는 같은 url 중복 사용 가능
@GetMapping("/test")
@PostMapping("/test")
3. 가독성 좋아짐
@RequestMapping(value="/a", method=RequestMethod.GET)
@RequestMapping(value="/b", method=RequestMethod.POST)
@RequestMapping(value="/c", method=RequestMethod.DELETE)
→ @GetMapping("/a")
@PostMapping("/b")
@DeleteMapping("/c")
4. 메소드에만 매핑 가능(@RequestMapping은 클래스에도 가능)
@RequestMapping("/test")
@Controller
public class TestController {
@RequestMapping(value="/get", method=RequestMethod.GET)
public void getTest(..) {..}
}
→
@RequestMapping("/test")
@Controller
public class TestController {
@GetMapping("/get")
public void getTest(..) {..}
}
/**
* 다 공부한 내용이지만
* 막상 실무를 경험하며 코드를 살펴보니
* 내가 공부한 것처럼 이론에 딱딱 맞게 작성되지는 않았다..
* 함부로 손댈수도 없고 어쩌지 이걸...
*/
'개발 공부' 카테고리의 다른 글
[@Autowired vs @RequiredArgsConstructor] feat. 의존성 주입 (0) | 2023.08.22 |
---|---|
[@RequestParam vs @RequestBody vs @ModelAttribute] feat. 검증 (0) | 2023.08.21 |
[SVN vs Git] feat. 형상 관리 툴 (0) | 2023.08.03 |
[기본 타입, 래퍼 클래스] feat. 박싱, 언박싱 (0) | 2023.06.20 |
[call by value, call by reference] feat. stack 영역, heap 영역 (0) | 2023.06.20 |