1-4 주소 설계 규칙(RESTful API 기준)

RESTful API
홍윤's avatar
Aug 19, 2024
1-4 주소 설계 규칙(RESTful API 기준)
 

1.주소 설계 규칙(RESTful API 기준)

💡
자원(Resource) 명사를 사용:
  • 설명: URL은 조회할 자원을 명사로 표현합니다. 자원은 일반적으로 복수형으로 표현하는 것이 관례입니다.
  • 예시:
    • /users: 모든 사용자 자원을 나타냅니다.
    • /posts: 모든 게시물 자원을 나타냅니다.
    • /products: 모든 상품 자원을 나타냅니다.
  1. 자원 식별을 위한 경로 변수:
      • 설명: 특정 자원을 식별하기 위해 URL 경로에 고유 식별자를 포함시킵니다.
      • 예시:
        • /users/1: ID가 1인 특정 사용자의 정보를 조회합니다.
        • /posts/10: ID가 10인 특정 게시물의 정보를 조회합니다.
  1. 계층적 구조 표현:
      • 설명: 자원 간의 관계를 계층적 구조로 표현하여 자원 간의 관계를 명확히 나타냅니다.
      • 예시:
        • /users/1/posts: ID가 1인 사용자가 작성한 모든 게시물을 조회합니다.
        • /categories/3/products: 특정 카테고리(3)에 속한 모든 상품을 조회합니다.
  1. 필터링 및 검색:
      • 설명: 쿼리 파라미터를 사용하여 특정 조건에 맞는 자원을 필터링하거나 검색합니다.
      • 예시:
        • /posts?category=tech&sort=date: 기술 카테고리의 게시물을 날짜순으로 정렬하여 조회합니다.
        • /products?price_min=100&price_max=500: 가격이 100에서 500 사이인 상품을 조회합니다.

GET 요청과 DB SELECT 요청의 관계

  • GET 요청:
    • 서버에 데이터를 조회하기 위해 클라이언트가 보냅니다. GET 요청은 서버의 데이터를 변경하지 않고, 데이터베이스에서 데이터를 읽어오는 작업에 주로 사용됩니다.
  • DB SELECT 요청:
    • GET 요청이 수신되면, 서버는 해당 요청에 따라 데이터베이스에서 SELECT 쿼리를 실행하여 데이터를 조회합니다. 이 과정에서 위의 주소 설계 규칙이 적용됩니다.

GET 요청의 예시

1) /boards?title=제목1

  • 설명: title이 유니크하지 않기 때문에, 특정 제목에 해당하는 모든 게시물을 조회합니다.
  • SQL 쿼리:
    • sql코드 복사 SELECT * FROM board_tb WHERE title = '제목1';
  • 용도: 특정 제목을 가진 모든 게시물을 필터링하여 조회할 때 사용합니다.

(2) /boards?title=제목1&content=내용1

  • 설명: titlecontent의 조합을 통해 게시물을 필터링하여 조회합니다.
  • SQL 쿼리:
    • sql코드 복사 SELECT * FROM board_tb WHERE title = '제목1' AND content = '내용1';
  • 용도: 제목과 내용이 일치하는 게시물을 조회할 때 사용합니다.

(3) /boards/1

  • 설명: id1인 특정 게시물을 조회합니다. id는 보통 고유 식별자(PK)입니다.
  • SQL 쿼리:
    • sql코드 복사 SELECT * FROM board_tb WHERE id = 1;
  • 용도: 특정 게시물의 상세 정보를 조회할 때 사용합니다.

(4) /boards

  • 설명: 모든 게시물을 조회합니다.
  • SQL 쿼리:
    • sql코드 복사 SELECT * FROM board_tb;
  • 용도: 전체 게시물 목록을 조회할 때 사용합니다.

(5) /users/1/boards

  • 설명: id1인 사용자가 작성한 모든 게시물을 조회합니다.
  • SQL 쿼리:
    • sql코드 복사 SELECT * FROM board_tb WHERE user_id = 1;
  • 용도: 특정 사용자가 작성한 게시물 목록을 조회할 때 사용합니다.

(6) /users/1/content

  • 설명: id1인 사용자의 특정 콘텐츠 정보를 조회합니다. 이 경로가 정확히 어떤 데이터를 반환하는지 명확하지 않지만, 사용자 관련 데이터를 조회할 때 사용됩니다.
  • SQL 쿼리 (예시):
    • sql코드 복사 SELECT content FROM user_tb WHERE id = 1;
  • 용도: 특정 사용자의 콘텐츠(예: 작성한 글이나 소개 정보 등)를 조회할 때 사용합니다.

(7) /boards/2/comments

  • 설명: id2인 게시물에 달린 모든 댓글을 조회합니다.
  • SQL 쿼리:
    • sql코드 복사 SELECT * FROM comments_tb WHERE board_id = 2;
  • 용도: 특정 게시물에 달린 모든 댓글을 조회할 때 사용합니다.

결론

RESTful API에서 GET 요청은 데이터베이스에서 데이터를 조회하기 위한 방법으로 사용되며, 주로 SELECT 쿼리로 처리됩니다. URL 설계는 자원을 명확하게 표현하고 식별할 수 있도록 RESTful 원칙을 따르며, 자원 명사형 경로, 경로 변수, 계층적 구조, 그리고 쿼리 파라미터를 사용해 설계합니다. 이러한 설계 원칙을 따르면 API는 직관적이고 확장 가능하며 유지 관리하기 쉬워집니다.
Share article

Uni