기타/백엔드

Rest API 설계

에잇콘텐츠 2020. 6. 5. 09:58

1. DB 설계부터 제대로 (테이블 분리)

데이터 중복을 피한다. (1:1, 1:다, 다:다로 설계) 

DB 정규화 (1, 2, 3, BCNF ...) 

created_at, updated_at 포함

 

2. Rest API 스펙을 지키자 (URI, Method, Status Code)

URI 에 동사를 작성하지 않는다. 

DB 관계가 복잡해지면 URL이 복잡해진다.

예) GET /api/user/{id}/task Get the list of all the task assigned to this user

Method : get, post, put, patch, delete

put과 patch의 차이는 put은 모든 정보를 보내고, patch는 일부 정보만 보낸다. 

상태코드 파악 (200, 201, 400, 404, 500 ...)

200대는 성공 / 400대는 요청 실패 / 500대는 서버에러

 

3. Stateless  

서버는 state를 가지고 있지 않아도 되기 때문에 서버가 스케일 아웃되는 경우에 유용

인증 토큰을 가지고 있음

안드로이드, iOS, 웹 (Vue, React) 등 프런트엔드와 백엔드의 명백한 분리가 가능해졌음

 

[출처] https://dev.to/khalyomede/design-an-easy-to-use-and-flexible-rest-endpoints-3fia

 

Design an easy to use and flexible REST API

If you have already built an application that uses a REST API, and you have been responsible for the...

dev.to

Rest API 외에도 GraphQL도 공부가 필요.

GraphQL

특징 : 필요한 요청 만 응답 값으로 불러온다.

장점 : 서버의 부하를 줄여준다.

문법 :  mutation 수정, 삭제