📍 Django REST framework
1. REST API
▶︎ API
- API(Application Programming Interface)
- 애플리케이션과 프로그래밍으로 소통하는 방법
- 클라이언트-서버처럼 서로 다른 프로그램에서 요청과 응답을 받을 수 있도록 만든 체계
- 복잡한 코드를 추상화하여 대신 사용할 수 있는 몇 가지 더 쉬운 구문을 제공
▶︎ Web API
- 웹 서버 또는 웹 브라우저를 위한 API
- 현대 웹 개발은 하나부터 열까지 직접 개발하기보다 여러 OpenAPI들을 활용하는 추세
- 대표적인 Third Party Open API 서비스 목록
- Youtube API
- Google Map API
- Naver Papago API
- Kakao Map API
▶︎ REST (Representational State Transfer)
- API Server를 개발하기 위한 일종의 소프트웨어 설계 방법론(약속)
▶︎ RESTful API
- REST 원리를 따르는 시스템을 RESTful 하다고 부름
- "자원을 정의"하고 "자원에 대한 주소를 지정"하는 전반적인 방법을 서술
▶︎ REST API
: REST라는 설계 디자인 약속을 지켜 구현한 API
▶︎ REST에서 자원을 정의하고 주소를 지정하는 방법
- 자원의 식별
- 자원의 행위
- 자원의 표현
▶︎ 자원의 식별
- URI (Uniform Resource Identifier)
: 통합 자원 식별자
- 인터넷에서 리소스를 식별하는 문자열
- 가장 일반적인 URI는 웹 주소로 알려진 URL
- URL (Uniform Resource Locator)
: 통합 자원 위치
- 웹에서 주어진 리소스의 주소
- 네트워크 상에 리소스가 어디 있는지를 알려주기 위한 약속
▶︎ URL 구성

- Schema (or Protocol)
- 브라우저가 리소스를 요청하는 데 사용해야 하는 규약
- URL의 첫 부분은 브라우저가 어떤 규약을 사용하는지를 나타냄
- 기본적으로 웹은 HTTP(S)를 요구하며 메일을 열기 위한 mailto:, 파일을 전송하기 위한 ftp: 등 다른 프로토콜도 존재
- Domain Name
- 요청 중인 웹 서버를 나타냄
- 어떤 웹 서버가 요구되는지를 가르키며 직접 IP 주소를 사용하는 것도 가능하지만, 사람이 외우기 어렵기 때문에 주로 Domain Name으로 사용
- 예를 들어 도메인 google.com의 IP 주소는 142.251.42.142
- Port
- 웹 서버의 리소스에 접근하는데 사용되는 기술적인 문(Gate)
- HTTP 프로토콜의 표준 포트
- 표준 포트만 생략 가능
- Path
- 웹 서버의 리소스 경로
- 초기에는 실제 파일이 위치한 물리적 위치를 나타냈지만
-
Parameters
-
Anchor
▶︎ 자원의 행위
▶︎ 자원의 표현
2. DRF
▶︎ Django REST framework
- Django에서 Restful API 서버를 쉽게 구축할 수 있도록 도와주는 오픈소스 라이브러리
▶︎ Serialization
: 직렬화
3. DRF with Single Model
▶︎ Postman
▶︎ ModelSerializer
- Django 모델과 연결된 Serializer 클래스
▶︎ 'api_view' decorator
- DRF view 함수에서는 필수로 작성되며 view 함수를 실행하기 전 HTTP 메서드를 확인
- 기본적으로 GET 메서드만 허용되며 다른 메서드 요청에 대해서는 405 Method Not Allowed로 응답
- DRF view 함수가 응답해야 하는 HTTP 메서드 목록을 작성
▶︎ raise_exception
- is_valid()는 유효성 검사 오류가 있는 경우 ValidationError 예외를 발생시키는 선택적 raise_exception 인자를 사용할 수 있음
- DRF에서 제공하는 기본 예외 처리기에 의해 자동으로 처리되며 기본적으로 HTTP 400 응답을 반환