web

[WEB] REST API 설계하기

기주그지마 2024. 2. 24. 01:28

 

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

 

남들이 봤을때 직관적으로 이해될 수 있어야한다.

 

 

RESTful한 api를 만드는 방법

 

 

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

GET /:accountidx/info (X)

남들이 볼때 <GET /5/info> 이것만 보고는 남들이 보고 직관적으로 이해하기 어렵다

 

GET /account/:idx/info (O)

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

 

 

 

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

GET /account/show/1 (x)

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

 

Post /account/id/Check  (O)

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

 

 

 

 

 

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

 

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

 

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

 

 

GET /comment/:articleidx (X)

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

 

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

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

 

 

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

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

6.URI에는 소문자만 쓰기

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

8. 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