본문 바로가기
개발 공부

[@RequestMapping] feat. HTTP 메소드

by 도됐좋 2023. 8. 17.
순서
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(..) {..}
}


/**

 * 다 공부한 내용이지만

 * 막상 실무를 경험하며 코드를 살펴보니

 * 내가 공부한 것처럼 이론에 딱딱 맞게 작성되지는 않았다..

 * 함부로 손댈수도 없고 어쩌지 이걸...

 */