TIL - Restful API

jake·2021년 12월 26일
0

TIL

목록 보기
22/54
post-thumbnail

Restful API를 사용하는 이유는 빠르게 API구조를 이해하고 직관적이며 활용도가 높기 때문이다.

Restful API 사용법 정리

API설계서를 작성할때는 CRUD를 기준으로 작성하게된다.

영화사이트의 API를 예를들어보면
영화를 추가할 때는 /addMovie/inception 이라고하거나 /createMovie/inception 이라고 정의해주면된다. 그런데 이러한 방법은 일정한 패턴이 없기 때문에 좋은 방법이 아니다.

Restful하게 작성하고 싶다면 /addMovie/inception, /createMovie/inception과 같이 URL에서 동사를 빼고 자원만 명시하고 HTTP methods를 활용하는게 좋다.
HTTP methods는 GET, POST, PUT, PATCH, DELETE가 있다.
GET은 조회, POST는 생성, PUT/PEACH는 업데이트, DELETE는 삭제

예제를 보자

  • 영화의 CRUD API

GET /movies : 전체 영화목록 조회
GET /movies/{id} : 어떤 하나의 영화 조회 (id는 영화게시글이 생성될 때 받은 id이다.)
POST /movies : 영화 추가 (추가할 데이터는 body에 전달)
DELETE /movies/{id} : 영화 삭제
PUT or PATCH /movies/{id}: 영화 수정(수정할 데이터는 body에 전달)

  • 어떤 영화의 배우들 CRUD API

GET /movies/{id}/actors : 영화의 배우 조회 (id는 영화게시글이 생성될 때 받은 id이다.)
POST /movies/{id}/actors : 영화의 배우 추가 (추가할 데이터는 body에 전달)
DELETE /movies/{id}/actors : 영화의 배우 삭제
PUT /movies/{id}/actors : 영화의 배우 업데이트 (수정할 데이터는 body에 전달)

  • GET방식을 이용한 필터나 검색기능같은 API

GET방식을 이용하여 특정 데이터만 서버에서 전달 받고싶다면 query parameters를 사용하면된다.
?는 url의 끝을 나타내는 것이고 =을 기준으로 앞에는 찾고자하는 데이터의 종류 즉 키, 뒤에는 값이라고 보면된다.
뒤에 값을 서버에 다르게 보내면 보낸 값을 기준으로의 데이터를 받을 수 있다.

GET /movies?min_rating=9.0
GET /movies?release_date=2021

참고로 실제프로젝트에서 id중복확인할 때 query parameters를 사용하였다. (querystring 참고사이트)


실제 사용했던 방법

아래이미지는 실제로 프로젝트 때 사용했던 API설계서이다.
url에 자원을 명시하고 method는 CRUD기준으로 사용하였다.

아래는 api설계서대로 axios를 사용한 실제코드이다.
instance라는 변수에 axios.create를 만들어 baseURL과 headers, withCredentials를 넣어줬다.

그리고 apis변수에 get, post, patch, delete를 만들어줬다.
(patch같은 경우는 url에 id값을 넣어주고, body에 수정할 데이터를 보내준다.)

리덕스에서 서버와 통신하는 updateDetailToAxios함수에 import해온 apis를 사용한다.

profile
열린 마음의 개발자가 되려합니다

0개의 댓글