inblog logo
|
Uni

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

    RESTful API
    홍윤's avatar
    홍윤
    Aug 19, 2024
    1-4 주소 설계 규칙(RESTful API 기준)
    Contents
    1.주소 설계 규칙(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

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

    (3) /boards/1

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

    (4) /boards

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

    (5) /users/1/boards

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

    (6) /users/1/content

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

    (7) /boards/2/comments

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

    결론

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

    Uni

    RSS·Powered by Inblog