[Django] REST API
HTTP
HyperText Transfer Protocol
- 웹 상에서 컨텐츠를 전송하기 위한 약속
- 웹에서 이루어지는 모든 데이터 교환의 기초
- 요청(Request): 클라이언트에서 서버로
- 클라이언트에 의해 전송되는 메시지
- Method + Path + Version of the protocal + Headers
- 응답(Response): 서버에서 클라이언트에게
- 서버에서 응답으로 전송되는 메시지
- Version of the protocol + Status code + Status message + Headers
HTTP Request methods
자원에 대한 행위를 정의
- HTTP Medhod
- GET (조회)
- POST (작성)
- PUT (수정)
- DELETE (삭제)
HTTP Response status codes
특정 HTTP 요청이 성공적으로 완료되었는지 여부를 나타냄
- 1xx : Informational response
- 2xx : Successful response
- 3xx : Redirection message
- 4xx : Client error response
- 5xx : Server error response
HyperText Transfer Protocol
- 클라이언트에 의해 전송되는 메시지
- Method + Path + Version of the protocal + Headers
- 서버에서 응답으로 전송되는 메시지
- Version of the protocol + Status code + Status message + Headers
자원에 대한 행위를 정의
- GET (조회)
- POST (작성)
- PUT (수정)
- DELETE (삭제)
특정 HTTP 요청이 성공적으로 완료되었는지 여부를 나타냄
참고: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
URI (Uniform Resource Identifier)
리소스 식별을 위해 사용됨
- 리소스(resource): HTTP 요청의 대상
- 리소스는 문서, 사진 또는 기타 대상이 될 수 있다.
- 통합 자원 식별자
- 인터넷의 자원을 식별하는 유일한 주소
- URI = URL + URN
URL(Uniform Resource Locator)
- 통합 자원 위치
- 네트워크 상 자원이 어디 있는지 알려주기 위함
URN (Uniform Resource Name)
- 통합 자원 이름
- URL과 달리 자원의 위치에 영향을 받지 않는 유일한 이름 역할
URL의 구조
- Scheme(protocol)
- Host(Domain name)
- Port
- Path
- Query(Identifier)
- Fragment
RESTful API
REST 원리를 따라 설계한 API
- 프로그래밍을 통해 클라이언트의 요청에 JSON을 응답(데이터)하는 서버를 구성
API (Application Programming Interface)
프로그래밍 언어가 제공하는 기능을 수행할 수 있게 만든 인터페이스
- 애플리케이션과 프로그래밍으로 소통하는 방법
소통 방법들
CLI
- 명령줄을 통해 소통(특정 기능 수행)
GUI
- 그래픽을 통해 소통(특정 기능 수행)
API
- 프로그래밍을 통해 소통(특정 기능 수행)
Web API
웹 애플리케이션 개발에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 명세
- 현재는 Open API를 활용하는 추세
- ex) TMDB API : 서비스에 요청을 보내고, 영화에 대한 데이터(응답)를 JSON형태로 받음 (영화에 대한 정보를 제공하는 별도의 다른 서비스)
- 응답 데이터 타입
- HTML, XML, JSON 등
REST (REpresentational State Transfer)
API Server를 개발하기 위한 일종의 소프트웨어 설계 방법론
- 네트워크 구조 원리의 모음
- REST 원리를 따르는 시스템을 'RESTful' 용어로 지칭
REST 자원과 주소의 지정 방법
- 자원(정보)
- URI로써 식별
- 행위 (URI를 통한 자원에 대한 행위)
- HTTP Method (GET/POST/PUT/DELETE)
- 표현
- 자원과 행위를 통해 궁극적으로 표현되는 결과물
- JSON으로 표현된 데이터
JSON (JavaScript Object Notation)
"JSON is a lightweight data-interchange format"
(데이터의 송/수신을 자바스크립트 객체로서 수행할 수 있게끔 하는 가벼운 문자열 데이터 표현식)
- JavaScript의 표기법을 따른 단순 문자열
- 파이썬의 dictionary타입, 자바스크립트의 object타입으로 변환할 수 있는 key-value 형태 구조
Serialization
데이터 구조나 객체 상태를 동일하거나 다른 컴퓨터 환경에 저장하고 나중에 재구성할 수 있는 포멧으로 변환하는 과정
(자바스크립트 객체를 JSON으로 바꾸는 과정)
- Django에서 Serializer는 Queryset 및 Model Instance(단일 객체의 경우)같은 복잡한 데이터를 JSON이나 XML 등의 유형으로 쉽게 변환할 수 있는 Python 데이터 타입으로 만들어 준다.
DRF
Django REST Framework
클라이언트의 요청에 따라 JSON을 돌려주며 소통
- Web API 구축을 위한 Toolkit를 제공하는 라이브러리
- DRF의 Serializer는 Django의 Form 및 ModelForm 클래스와 매우 유사하게 구성되고 작동함
$ pip install djangorestframework
Author And Source
이 문제에 관하여([Django] REST API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@ruwan9/Django-REST-API
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
REST 원리를 따라 설계한 API
프로그래밍 언어가 제공하는 기능을 수행할 수 있게 만든 인터페이스
웹 애플리케이션 개발에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 명세
- ex) TMDB API : 서비스에 요청을 보내고, 영화에 대한 데이터(응답)를 JSON형태로 받음 (영화에 대한 정보를 제공하는 별도의 다른 서비스)
- HTML, XML, JSON 등
API Server를 개발하기 위한 일종의 소프트웨어 설계 방법론
- URI로써 식별
- HTTP Method (GET/POST/PUT/DELETE)
- 자원과 행위를 통해 궁극적으로 표현되는 결과물
- JSON으로 표현된 데이터
"JSON is a lightweight data-interchange format"
(데이터의 송/수신을 자바스크립트 객체로서 수행할 수 있게끔 하는 가벼운 문자열 데이터 표현식)
데이터 구조나 객체 상태를 동일하거나 다른 컴퓨터 환경에 저장하고 나중에 재구성할 수 있는 포멧으로 변환하는 과정
(자바스크립트 객체를 JSON으로 바꾸는 과정)
Django REST Framework
클라이언트의 요청에 따라 JSON을 돌려주며 소통
$ pip install djangorestframework
Author And Source
이 문제에 관하여([Django] REST API), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ruwan9/Django-REST-API저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)