728x90
Server에 요청 시에도 추가적인 Data가 필요하다!
- Facebook의 Feed를 조회하려면?
- 로그인 되어 있는 사용자의 정보 및 페이지 데이터를 요청과 함께 전송해야 한다
- 블로그의 글을 작성하려면?
- 사용자의 정보, 작성된 제목 및 글 데이터를 요청과 함께 전송해야 한다
- Instagram의 특정 게시물을 삭제하려면?
- 사용자의 정보와 삭제하려는 게시물의 정보를 함께 전송해야 한다
Request 파라미터
- Client가 Server에 요청(Request)를 할 때 추가적으로 전송하는 데이터이다
- 보통 2가지 유형의 Request 파라미터를 주로 사용한다
- Query String
- Path Parameter(Variable)
- Spring Framework는 Request 파라미터를 메소드의 파라미터에 저장한다
1. Request 파라미터 - Query String
- key-value 쌍으로 만든다
- URI와 파라미터의 영역을 구분하여 사용한다
- URI에 이어지는 '?' 뒤에 key1=value&key2=value2&... 형태로 작성한다
- key가 파라미터의 이름, value가 파라미터의 값
Request 파라미터 - Query String의 할용
- 메소드 파라미터에 @RequestParam Annotation 을 사용한다
- name 요소는 Query String의 key에 매핑된다
@RequestParam 의 요소들
- name
- query string의 key
- key와 변수명이 같은 경우에는 생략이 가능하다 (위의 예시의 경우에는 생략이 가능하다)
- required : 필수 여부
- false는 선택
- true는 필수 (true의 경우 파라미터가 없으면 에러 발생)
- defaultValue
- 데이터가 없을 경우의 기본 값을 의미한다
2. Request 파라미터 - Path Parameter
- URI의 일부로 파라미터 값을 사용한다
- domain/user/1
- domain/user/3/post/27
- https://brunch.co.kr/@thinkaboutbh/506
- https://www.codepresso.kr/course/9
- @RequestMapping value URI에 { } 로 Path Param임을 표시한다
- 메소드 파라미터에 @PathVariable Annotation을 사용한다
- 선택적 데이터의 경우에는 Path Param을 잘 사용하지 않는다
- Path Param을 지정했는데 값이 전달되지 않으면 에러가 발생한다!
Query String vs Path Parameter
- 특정 자원을 요청하는 경우에는 Path Param을, 정렬이나 추가 필터링을 위한 데이터는 Query String을 사용한다
- 명사로 요청되는 자원의 경우 Path Param 사용 : localhost:8080/courses/spring (스프링 강의 요청)
- 추가적인 옵션의 경우 Query String 사용 : localhost:8080/courses?order=latest (강의 최신순 정렬)
- 필수 데이터는 Path Param으로, 선택적 데이터는 Query String을 사용한다
- Path Param이 포함된 URI는 Client가 영향을 받기 떄문에 변경 비용이 높다
- Query String은 상대적으로 편하게 확장이 가능하다 (필수 파라미터 X)
- 조직(회사/팀)마다 표준이 존재하고, 표준에 따라 개발한다
정리!
- Server에 데이터를 요청할 때 추가적인 정보가 필요한 경우가 있다
- 이 때 요청 시 추가적으로 전송하는 데이터가 Request 파라미터이다
- Query String과 Path Parameter가 사용된다
- Spring Framework는 2가지 유형을 모두 지원한다
- @RequestParam
- @PathVariable
- 조직의 표준에 따라 적절히 활용해야 한다
728x90
'코드프레소 체험단 > Spring Boot를 활용합 웹 개발' 카테고리의 다른 글
[Spring Boot 웹 개발 입문] HTTP 메소드와 Request Body, REST API 문서 (0) | 2022.02.03 |
---|---|
[Spring Boot 웹 개발 입문] Response 데이터와 JSON 포맷 (0) | 2022.02.03 |
[Spring Boot 웹 개발 입문] RequestMapping과 URI, HTTP API의 개념 (0) | 2022.02.03 |
[Spring Boot 웹 개발 입문] 계층형 아키텍처와 컨트롤러 (0) | 2022.02.03 |
[Spring Boot 웹 개발 입문] Web의 기초 개념과 HTTP의 기초 활용 (2) (0) | 2022.01.28 |
댓글