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를 설계할 때는 이러한 요소들을 고려하여 가장 효율적이고 명확한 데이터 전송 방법을 결정해야 합니다.

PUT / PATCH : 수정

  • 특정 데이터를 수정할 때 사용
  • PUT : 특정 데이터 전체를 수정할 때 사용
  • PATCH : 특정 데이터 일부를 수정할 때 사용

GET : 조회

  • 리소스를 조회할 때 사용

DELETE : 삭제

  • 서버에 있는 리소스를 삭제할 때 사용

POST : 생성

  • 서버에 데이터를 전송하여 새 리소스를 생성할 때 사용
  • 기존 리소스에 대한 처리를 요청할 때 사용
  • PUT, PATCH, GET, DELETE 가 아닐때 사용

+ Recent posts