RESTful API
REST 정의
- Representational State Transfer
- 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하는 통신 방식
- 자원(resource)의 표현(representation)에 의한 요청 정보 전달
- 자원의 표현: 자원을 표현하기 위한 이름
- JSON 또는 XML 데이터로 응답
REST 개념
- HTTP URI를 통해 자원(resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD 기능을 적용하는 것
- 웹 사이트의 이미지, 텍스트, DB 등 모든 자원에 HTTP URI를 부여함
REST API
API(Application Programming Interface): 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙
- 데이터와 기능의 집합을 제공하여 컴퓨터 프로그램 간 상호작용을 촉진하며, 서로 정보를 교환 가능 하도록 하는 것
REST API 정의
REST 아키텍처 스타일 디자인 원칙을 준수하는 API
- 균일한 인터페이스(uniform interface)
- 클라이언트-서버 디커플링(client-server)
- 무상태(stateless)
- 캐싱 가능성(cache)
- 계층 구조 아키텍처(layered system)
- 코드 온디맨드(code-on-demand)
RESTful API 설계 규칙
- URI는 정보의 자원을 표현해야 한다.
- 자원에 대항 행위는 HTTP Method(GET, PUT, POST, DELETE 등)로 표현한다.
- 슬래시(/) 구분자는 계층 관계를 나타낸다.
- URI 마지막 문자로 슬래시(/)를 포함하지 않는다.(Django에서는 붙이는 것을 권장)
- 하이픈(-)은 URI 가독성을 높이는 데 사용한다.
- 밑줄(_)은 URI에 사용하지 않는다.
- URI 경로에는 소문자가 적합하다.
- 파일 확장자는 URI에 포함하지 않는다.
RESTful 이란
REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 함
RESTful의 목적
- 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것
- RESTful 한 API 구현 목적은 성능 향상이 아니라 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것
- 성능이 중요한 상황에서는 굳이 RESTful 한 API를 구현할 필요 없음
DRF URI | Method | Action |
/api/post | GET | list(select all) |
/api/post/99/ | GET | retrieve |
/api/post | POST | create |
/api/post/99/ | PUT | update |
/api/post/99/ | DELETE | delete |
/api/post/99/ | PATCH | partial_update |
Django REST Framework
Django REST Framework 설치
pip instal djangorestframework
앱 등록
# settings.py
INSTALLED_APPS = [
...
"rest_framework",
]
참고
반응형