API 서버란?
앱/웹 개발자가 이용하는 data 위주의 서비스이며 시간이 지나도 호환성을 유지 해야 한다.
REST (Representational State Transfer) 란?
1. 리소스 중심으로 디자인.(리소스 : django 기준 models를 의미)
2. 클라이언트에서 엑세스할 수 있는 모든 종류의 개체/서비스가 리소스에 포함
3. 리소스마다 해당 리소스를 고유하게 식별하는 식별자 -> https://my-trips.com/trips/1/
4. 요청/응답 포맷으로 흔히 Json을 사용
5. 균일한(uniform) 인터페이스를 적용[ 리소스에 표준 HTTP 동사(GET,POST,PUT,PATCH,DELETE)를 적용]
리소스를 중심으로 API 구성
/customers/ -> 고객 페이지
/customers/5/ -> 5번 고객의 페이지
/customers/5/orders/ -> 5번 고객의 주문 페이지
/orders/99/customer/ 주문 페이지의 99고객 페이지
HTTP 메서드를 기준으로 기본 작업 정의
GET : 리소스의 표현. 응답 본문에 리소스의 세부 정보
POST : 새 리소스 생성 요청, 요청 본문에 새 리소스의 세부 정보 제공
PUT : 기존 리소스를 대체, 요청 본문에 갱신할 리소스 정보를 제공
PATCH : 기존 리소스를 부분 대체, 요청 본문에 갱신할 리소스 정보 제공
DELETE : 지정 리소스를 제거
리소스 | GET | POST | PUT | DELETE |
/posts/ | 모든 포스팅 목록 | 새 포스팅 만들기 | 포스팅 대량 업데이트 | 모든 포스팅 삭제 |
/posts/1/ | 포스팅 1에 대한 내용 | X | 포스팅 1의 정보 갱신 | 포스팅 1 삭제 |
/posts/1/comments/ | 포스팅 1에 대한 모든 댓글 | 포스팅 1의 새 댓글 만들기 | 포스팅 1의 댓글 대량 업데이트 | 포스팅 1의 모든 댓글 삭제 |
요청/응답 형식 지정
요청 : Content-Type 헤더
ex) application/json, application/ven.ms-excel, image/jpeg, application/pdf 등등
요청 시에 처리를 원하는 형식을 지정하면, 서버에는 이 형식으로 응답
서버에서 해당 형식을 지원하지 않으면 HTTP 상태 코드 415 (지원하지 않는 미디어 유형) 반환
HTTP METHOD별 다양한 상태 코드
GET : 일반적으로 200(OK) 응답. 리소스를 못 찾을 경우 404(Not Found)응답
POST : 201 (Created) 응답. 새 리소스의 URL는 응답의 Location 헤더에.
새 리소스를 만들지 않는 경우 200을 응답하며 반환할 결과가 없으면 204(내용 없음) 반환 가능
잘못된 데이터로 요청하면 400(잘못된 요청)을 읍답 하고 오류정보 또는 자세한 정보를 제공하는 URL 링크를
같이 보냄
PUT : 기존 리소스를 업데이트 할 경우 200(OK)를 반환 또는 204(내용 없음)을 반환, 상황에 따라 업데이트 할 수 없는
경우 409(충돌)을 반환
DELETE : 성공하면 204응답, 리소스가 없는 경우 404응답
비동기 작업 : 작업 시간이 오래 걸리는 경우 다른 Task Queue를 통해 비동기 처리 할 경우 202(수락됨) 응답
클라이언트가 이 작업을 Polling을 통해 모니터링 할 수 잇도록 비동기 요청 상태를 반환 하는 URI을
Location 헤더로 반환
Dajgno-rest-framework의 주요 기능들
- Serializer/ModelSerializer를 통한 데이터 유효성 검증 및 데이터 직렬화
- 각종 Parser를 통한 데이터 처리
- APIView/Generic/ViewSet/ModelViewSets를 통한 요청 처리
- 각종 Renderer를 통한 다양한 응답 포맷 지원
- 인증(Authentication)/권한(Permission) 체계 - 서드파티를 통해 JWT 지원
- Throttling(최대 호출 횟수 제한)
CRUD
모든 데이터는 기본적으로 "추가/조회/수정/삭제" 액션으로 관리될 수 있습니다.
- C : Create (생성) : 새 레코드 생성
- R : Read, Retrieve (조회) : 레코드 목록 조회, 특정 레코드 조회
- U : Update (수정) : 특정 레코드 수정
- D : Delete (삭제) : 특정 레코드 삭제
주의) CRUD는 리소스에 대한 대표적인 동작일 뿐, API의 전부는 아닙니다.
'Djnago > DRF' 카테고리의 다른 글
[DRF] JSON Return View 만들기 (0) | 2021.03.21 |
---|
댓글