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
참고: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
리소스 식별을 위해 사용됨
- 리소스(resource): HTTP 요청의 대상
- 리소스는 문서, 사진 또는 기타 대상이 될 수 있다.
- 통합 자원 식별자
- 인터넷의 자원을 식별하는 유일한 주소
- URI = URL + URN
- 통합 자원 위치
- 네트워크 상 자원이 어디 있는지 알려주기 위함
- 통합 자원 이름
- 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를 통한 자원에 대한 행위)
- 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