본문 바로가기

Back-end/Spring Boot

@RequestParam, @PathVariable, @RequestBody

https://elfinlas.github.io/2018/02/18/spring-parameter/

 

Spring에서 @RequestParam과 @PathVariable

Spring에서 Controller의 전달인자…Spring을 사용하다 보면 Controller 단에서 클라이언트에서 URL에 파라메터를 같이 전달하는 경우가 있습니다.주로 사용하는 형태는 아래의 두 가지가 대표적인 케이

elfinlas.github.io

https://willbesoon.tistory.com/102

 

@RequestParam @PathVariable 차이점 비교

웹 개발에서는 http의 비연결성으로 인해 데이터를 전달해줄 여러가지 방법들이 있어왔습니다. 예전에는 쿠키도 있었고 세션도 있었고 여러가지 방법들이 있었는데요. 스프링에서도 두 가지의

willbesoon.tistory.com

https://charliecharlie.tistory.com/263

 

[Spring] @PathVariable, @RequestParam, @RequestBody

RESTful 서비스는 URI를 사용해 리소스의 이름을 지정한다. URI에 담긴 정보에 쉽게 접근하기 위해 구조화된 형식을 따른다. @PathVariable URI 경로의 일부를 파라미터로 사용할 때 이용(URI 경로에서 값

charliecharlie.tistory.com

 

참고자료


@RequestParam @RequestBody, @PathVariable 모두 form 태그에서 데이터를 전달할 때 컨트롤러에서 데이터를 인자에 할당하는 대표적인 방법이다.

 

Type 1 => http://127.0.0.1?index=1&page=2
Type 2 => http://127.0.0.1/index/1

Type 1의 경우 파라메터의 값과 이름을 함께 전달하는 방식으로 게시판 등에서 페이지 및 검색 정보를 함께 전달하는 방식을 사용할 때 많이 사용한다.
Type 2의 경우 Rest api에서 값을 호출할 때 주로 많이 사용한다.

 

 

@RequestParam

  • 전달받은 데이터를 URI상에서 찾는다.
  • Type 1의 URI를 처리할 때 사용한다.
  • GET 방식으로 넘어온 URI의 queryString을 받기 적절하다.
  • @RequestBody로 데이터를 받을 경우 메소드의 파라미터명이 상관 없지만 @RequestParam으로 데이터를 받을 때는 데이터를 저장하는 이름으로 메소드의 파라미터명을 설정해줘야 한다.
  • 해당하는 데이터만 받아올 수 있다. (@RequestBody는 객체를 받아옴)
  • ex) http://localhost:8080/receive?name=jun&age=13

@PathVariable

  • URI 경로의 일부를 파라미터로 사용할 때 이용한다.
  • 템플릿 변수의 값을 추출하고 그 값을 메소드 변수에 할당한다.
  • Type 2의 Rest api에서 값을 호출할 때 주로 사용한다.

@RequestBody

  • http 요청의 body에 담긴 값을 자바 객체로 변환한다.
  • 비동기 처리 구현시 @ResponseBody와 함께 사용한다.
  • 일반적인 GET/POST의 요청 파라미터라면 @RequestBody를 사용하지 않아도 된다.
  • xml이나 json 기반의 메시지를 사용하는 요청의 경우 유용하다.
  • ex) http://localhost:8080/receive

 

  @RequestBody @RequestParam
객체 생성 가능 불가능
각 변수별로 데이터 저장 불가능 가능

 

 

@RequestParam query 처리

@PathVariable URI 변수 처리

@RequestBody JSON 처리

'Back-end > Spring Boot' 카테고리의 다른 글

ResponseEntity란?  (0) 2021.10.12
@RequestBody와 @ResponseBody  (0) 2021.10.07
Spring Boot - REST API - 학습필요  (0) 2021.10.07
Spring Boot 특징  (0) 2021.10.06