본문 바로가기
Djnago/DRF

[DRF] API 서버와 REST

by UnoCode 2021. 3. 21.

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

댓글