본문 바로가기
Spring/series

[spring 6편] spring request 관련 정리

by 무대포 개발자 2021. 8. 24.
728x90
반응형

목차는 spring series 목차 에 있습니다.

spring request annotation 정리

@RequestParam

  • Http 요청 파라미터를 받기 위해서 spring 에서 사용하는 annotation 입니다.
  • @RequestParam 은 값이 반드시 있어야 하며, 값이 없으면 400 Error 가 발생합니다.
    • 값을 반드시 받지 않아도 되는 옵션이 있습니다 (required = false)
  • 예를 들면, http://localhost:8080?page=2&size=10 get 방식으로 요청한다고 가정을 합니다.
  • 위와 같은 url 이 있을 때 RequestParam 을 사용하면 값을 가져올 수 있습니다.

// http://localhost:8080?page=2&size=10

@GetMapping(value ="/member", params = {"page", "size"})
public ResponseEntity<?> getMembers(@RequestParam("page") int page, 
                                    @RequestParam("size") int size) {

}

@PathVariable

  • PathVariable 의 정의는 요청 URI 매핑에서 변수를 매핑하는 annotation 입니다.

@GetMapping("/member/{id}")
@ResponseBody
public String getMember(@PathVariable("id") String memberId) {

}

RequestParam 과 PathVariable 차이점

RequestParam 과 PathVariable 내부 동작

  • HandlerMethodInvoker.resolveHandlerArguments 에서 Parsing 이 이루어지며, 값이 없을 경우 empty string 을 return 합니다.

@RequestBody

  • RequestBody 는 Http Request Body 를 자바 객체로 비직렬화하는 annotation 입니다.
  • 관련 자세한 내부 동작은 MessageConveter 정리했습니다.

Reference

댓글