반응형
이 또한 면접에서 질문받았던 내용인데, 이전에는 정말 잘 알고있다고 생각했는데
막상 질문을 받았을 때 Rest한 API가 되기 위한 규칙 외에
진짜 Restful API가 무엇인지에 대해 명확한 답변을 하지 못한 아쉬움에 다시 한번 정리해보고자 한다.
RESTful API란?
REST는 "Representational State Transfer"의 약자이다.
REST API는 REST 아키텍처의 제약 조건을 준수하는 애플리케이션 프로그래밍 인터페이스이다.
- 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
- 클라이언트, 서버 및 리소스로 구성되었으며 요청이 HTTP를 통해 관리되는 클라이언트-서버 아키텍처
- 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다.
- JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다.
HTTP URI를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, PATCH, DELETE)를 통해 해당 자원에 대한 CRUD 동작을 표시하고 적용하는 것을 의미한다.
Restful API 제약조건
- URI는 자원을 표현해야함
- 클라이언트 또는 서버에서 관리하는 리소스는 복수로 표현하는게 좋으며, 인스턴스는 단수를 사용
(ex. /users/:userIdx, /users/photo) - URI에는 최대한 명사만 사용하는것이 좋으며, 동사의 역할은 method가 할 수있도록 함
- 언더바 사용은 안되며, 필요한 경우 하이픈 사용(-)
- 마지막 슬래시(/)는 붙이지 않음
- 대문자보다 소문자 사용
- 파일 확장자는 포함하지 않음. (ex. /users/photo.png)
+) 추가로 개인적인 견해
- uri 길이는 최대 5개를 넘어가지 않고 구성하는게 좋은 것 같음
- 왼쪽에 가장 큰 리소스단위가 오는 것이 좋은 것 같음
(ex. /image/users (X), /users/image (O), /users/23/image (O) )
Restful한 API 설계 예시
:userIdx는 userIdx가 들어오는 path variable
- POST /users -> 사용자 등록(=회원가입)
- GET /users -> 모든 사용자 조회
- GET /users/:userIdx -> userIdx에 해당하는 사용자 조회
- POST /boards -> 게시글 등록
- GET /boards -> 모든 게시글 조회
- GET /boards/:boardIdx -> boardIdx에 해당하는 게시글 조회
- PATCH 또는 PUT /boards/:boardIdx -> boardIdx에 해당하는 게시글 수정
- DELETE /boards/:boardIdx -> boardIdx에 해당하는 게시글 삭제
- GET /boards/:boardIdx/comments -> boardIdx에 해당하는 게시글의 댓글 조회
- GET /users/:userIdx/image -> userIdx에 해당하는 사용자의 이미지 조회
여러 리소스가 연관될수록 uri 설계하는데 고민이 많이되는 것 같다.
사람마다 uri을 작성하는 방법은 다를 수 있지만(특히 긴 uri의 경우)
uri와 method만 보았을 때 이 API가 어떤 동작을 하는 API인지 누가봐도 알 수있도록 설계하는 것이 가장 중요한 것 같다고 생각한다!
참조 : https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
반응형
'etc. > 개념정리' 카테고리의 다른 글
쿠키(Cookie), 세션(Session)이란? (0) | 2021.09.05 |
---|