Path Params : 리소스를 식별
Query String : 요청의 성격을 명확히 ( 정렬, 필터링, ...)
Request Body : 복잡한 데이터를 전송
Path Params (경로 매개변수)
- 목적: 리소스 식별
- 리소스 식별: 경로 매개변수는 주로 리소스나 리소스의 특정 부분을 식별하는 데 사용됩니다. 예를 들어, /users/123 에서 123 은 사용자 리소스의 고유 ID를 나타내는 경로 매개변수입니다.
- 특징:
- 필수 정보: URL의 구조적인 부분으로, 해당 리소스에 접근하기 위해 필수적인 정보를 포함합니다.
- 계층적 데이터: 계층적인 데이터 구조를 나타내기에 적합하며, URL의 경로 부분에 자연스럽게 매핑됩니다.
- /countries/korea/cities/seoul -> 국가와 도시를 계층적으로 표현
- 적합한 상황:
API URL이 리소스의 고유한 위치를 나타내야 할 때, 즉 URL의 구조가 리소스의 식별에 직접적으로 사용되는 경우에 적합합니다. - 사용 예:
- 특정 사용자의 프로필 페이지에 접근할 때 (/users/123)
- 특정 게시글을 조회할 때 (/posts/456)
Query String (쿼리 스트링)
- 목적: 필터링, 정렬, 검색
- 특징:
- 선택적 정보: 선택적인 요청 데이터를 전달하는 데 사용되며, 이 데이터 없이도 기본적인 요청 처리가 가능합니다.
- 비계층적 데이터: 비계층적 데이터를 전달하는 데 적합하며, 다양한 종류의 데이터를 유연하게 전달할 수 있습니다.
- 적합한 상황:
요청이 리소스에 대한 비계층적 데이터를 필터링하거나, 정렬, 검색 조건을 지정하는 등의 추가적인 정보를 제공해야 할 때 적합합니다. - 사용 예:
- 특정 조건에 맞는 상품 목록을 조회할 때 (/products?type=electronics&price_range=100-500)
- 검색 결과를 특정 방식으로 정렬하거나 페이징 처리할 때 (/search?q=keyword&page=2&sort=date)
Request Body (요청 본문)
- 목적: 복잡한 데이터 전송
- 특징:
- 복잡한 데이터 구조: JSON, XML 등의 형식을 사용하여 복잡한 구조의 데이터를 전송하는 데 적합합니다.
- 데이터의 양: 대량의 데이터를 전송할 수 있으며, 특히 POST, PUT, PATCH 요청에서 리소스 생성, 업데이트, 수정에 사용됩니다.
- 적합한 상황:
POST, PUT, PATCH 같은 메소드를 사용하여 리소스를 생성, 업데이트 또는 수정할 때 사용됩니다. 예를 들어, 새로운 사용자를 생성하는 POST 요청에서 요청 본문은 사용자의 이름, 이메일 등을 포함할 수 있습니다. - 사용 예:
- 새로운 사용자 등록, 사용자 정보 업데이트 (POST /users, PUT /users/123)
- 게시글 작성, 댓글 달기 등의 작업에서 복잡한 내용을 전송할 때
요약
- Path Params는 URL의 일부로서 리소스를 직접적으로 식별하는 정보를 포함합니다. 주로 리소스의 위치나 고유한 식별자를 나타내는 데 사용됩니다.
- Query String은 URL에 추가적인 정보를 제공하는 선택적 매개변수를 포함하여, 리소스에 대한 추가 조건이나 요구 사항을 전달하는 데 사용됩니다. 이는 주로 필터링, 검색, 정렬 등의 작업에 적합합니다.
- Request Body는 주로 HTTP 메소드가 POST, PUT, PATCH인 경우에 사용되며, 리소스의 생성, 업데이트, 수정과 같은 작업에 필요한 복잡한 데이터나 대량의 정보를 전송하는 데 사용됩니다.
각각의 방법은 API의 목적, 리소스의 구조, 요청의 성격을 기반으로 적절하게 선택되어야 합니다. 따라서, API를 설계할 때는 이러한 요소들을 고려하여 가장 효율적이고 명확한 데이터 전송 방법을 결정해야 합니다.
'서버 & 웹 개발 노트 > 웹' 카테고리의 다른 글
[ 웹 ] 비대칭키(공개키)와 대칭키 비교 (0) | 2024.03.31 |
---|---|
[웹] Reverse Proxy 리버스 프록시 (0) | 2024.03.21 |
정적 과 동적 (0) | 2024.03.20 |
WAS(Web Application Server) vs WS(Web Server) (0) | 2024.03.20 |
HTTP Request Methods (0) | 2024.01.29 |