일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- unnest
- 토큰
- 알림생성
- 게시글 이미지 업로드
- route 53
- 포트번호
- 이미지가 포함된 게시글
- 메뉴바 한번에
- 알림생성모듈
- 네비게이션 한번에
- element.style
- .env
- Winston
- 쿼리스트링
- N+1
- N+1문제
- 환경변수
- 스테이지어스
- 3계층구조
- 레포지토리
- getComputedStyle
- 패스파라미터
- JSON Web Token
- 게시글 이미지
- 부트캠프
- JWT 쓰는 방법
- JWT 쓰는이유
- secret코드
- JWT
- 메뉴바
- Today
- Total
기주
[WEB] REST API 설계하기 본문
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
'web' 카테고리의 다른 글
[WEB] https의 동작원리 (+대칭키 vs 비대칭키)(+AWS SSL로 https적용하기) (0) | 2024.12.15 |
---|---|
[web] IP와 Port번호 (0) | 2024.12.03 |
[Web] Web server 와 WAS 의 차이점 (+ Web Container) (0) | 2024.11.21 |
[web] 홈서버 구축에 필요한 네트워크 공부하기 (1) | 2024.04.24 |
WEB) JWT 토큰인증 - 세션 vs 쿠키 vs 토큰 (0) | 2024.01.09 |