ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [WEB] REST API 설계하기
    TIL 2024. 2. 24. 01:28

     

     

     

    rest api를 만드는데에 정답은 없다. 하지만 더 직관적이게 짤수록 좋다. 

     

    남들이 봤을때 바로바로 이해될 수 있어야한다.

     

     

    rest ful한 api를 만드는 방법)

     

     

    1. URI는 정보의 자원을 표현해야한다

     

    GET  /:accountidx/info (X)

    ㄴ 남들이 볼때 -  /5/info

    ㄴ 이것만 보고는 남들이 보고 직관적으로 이해하기 어렵다

     

    GET   /account/:idx/info (O)

    ㄴ 남들이 볼때 - /account/5/info

    ㄴ남들이 볼때 5번계정의 info를 요청 하는것이라고 직관적으로 이해할 수 있다

     

    2. 동사를 쓰지않고 명사만 쓴다

     

     

    GET /account/idCheck  (x)

    ㄴ 동사는 Method(get, put, post, delete)로만 이용한다. 그외 URI내에 동사를 쓰지않는다

     

    Post /account/id/Check  (O)

    ㄴ post 마지막에 들어오는 동사정도만 허용한다

     

     

    3. GET 방식에는 body가 없다

     

     

     

    4. /는 계층을 구분하는데에 쓴다

     

    동일 계층이면 해당 리소스를 지우고 쓰면 되지만, 하위계층에 해당하는 리소스라면, 해당리소스 뒤에 /(슬래쉬)로 이어서 표현한다

     

    예시) - 해당 게시글의 댓글 불러오기

     

     

    GET /comment/:articleidx (X)

    ㄴ댓글은 게시글 하위계층에 속하는데 post계층이 표현되지 않았고, 남들이 보기에 /comment/4 와 같은 방식으로 보여지기에, 4번째 댓글을 가져오라는 것처럼 보여서 부자연스럽

     

    GET /post/:postidx/comment/all (O)

    ㄴ댓글은 게시글의 하위계층에 존재하는 것이므로 자연스럽다

     

     

    5.언더바(_)대신 하이픈(-)사용하기

    6.URI마지막에 슬래쉬(/) 쓰지않기

    7.URI에는 소문자만 쓰기

    8.파일 확장자는 URI에 포함시키지않기

     

    9. method get에는 req.body가 없다

     

     

     

     

    컬렉션과 도큐먼트를 이용하기)

     

    Document는 문서, 객체로 표현된다. 단수형로 사용한다

    Collection은 문서의 집합, 객체의 집합으로 표현된다. 복수형으로 사용한다

     

     

    /naver.com/sports/soccer/players/13

     

    ㄴ컬렉션인 sports, players는 복수형으로 쓰였다

    ㄴ도큐먼트인 soccer, 13은 단수형으로 쓰였다

    ㄴ축구선수 13번을 의미한다

     

     

     

     

     

     

     

     

    참고)

    https://inpa.tistory.com/entry/WEB-%F0%9F%8C%90-REST-API-%EC%A0%95%EB%A6%AC

     

     

     

     

    'TIL' 카테고리의 다른 글

    [aws] 프라이빗IP, NAT , CIDR  (0) 2024.02.29
    [DB] DB 모델링 - 소셜 로그인기능  (0) 2024.02.25
    [postgresSQL] enum 타입  (0) 2024.02.19
    [DB] 식별관계와 비식별관계  (0) 2024.02.19
    [DB] 트랜잭션 (Transaction)  (0) 2024.02.19
Designed by Tistory.