API : 프로그래밍 언어가 제공하는 기능을 수행할 수 있게 만든 인터페이스
WebAPI
- 웹 어플리케이션 개발에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 명세
- 현재 웹 개발은 추가로 직접 모든 것을 개발하지 않고 여러 Open API를 가져와서 활용하는 추세
"프로그래밍을 통한 요청에 JSON을 응답하는 서버를 만들자"
RestAPI
-> REpresentational State Transfer
REST
- 웹 설계 상의 장점을 최대한 활용 할 수 있는 아키텍쳐 방법론
- 네트워크 아키텍쳐 원리의 모음
- 자원을 정의
- REST 원리를 따르는 시스템 혹은 API를 RESTful API라고 하기도 함.
즉, 자원과 주소를 구성하는 방법이다.
REST 구성
- 자원 (URI)
- 행위 (HTTP Method)
- 표현 (Representations)
- URI
- Uniform Resource Identifier
- 통합 자원 식별자
- 인터넷의 자원을 나타내는 유일한 주소
- 인터넷에서 자원을 식별하거나 이름을 지정하는데 사용되는 간단한 문자열.
- 인터넷
- 하위개념: URL, URN
- URL
- Uniform Resource Locatopr
- 통합 자원 위치
- 네트워크 상에 자원이 어디있는지 주소를 알려주기 위한 약속
- 자원은 HTML페이지, CSS 문서, 이미지 등이 될 수 있음
- '웹주소' 또는 '링크'라고도 불림
- URN
- Unirom Resource Name
- 통합 자원 이름
- URL과 달리 자원의 위치에 영향을 받지 않는 유일한 이름 역할을 함.
URN은 자원의 ID를 정의하고, URL은 자원을 찾는 방법을 제공
URI 구조
URI, URN
- URI는 크게 URL과 URN으로 나눌 수 있지만, URN을 사용하는 비중이 매우 적기 때문에 URL은 URI를 통칭하는 말로 사용하긴 한다.
URI 설계 주의사항
- 밑줄(_)이 아닌 하이픈(-) 을 사용
- 소문자 사용
- 파일 확장자는 포함시키지 않음.
HTTP(HyperText Transfer Protocol)
- HTML 문서와 같은 자원들을 가져올 수 있도록 해주는 프로토콜
- 웹에서 이루어지는 모든 데이터 교환의 기초
- 요청 : 클라이언트에 의해 전송되는 메시지
- 응답 : 서버에서 응답으로 전송되는 메시지
- HTTP 특징:
- 비연결 지향
- 무상태(stateless)
- 접속이 끊어지면 클라이언트와 서버 간의 통신이 끝나며 상태를 저장하지 않음.( ex 로그인) -> 쿠키와 세션을 사용한다. 매 요청마다 쿠키를 계속해서 보내주는 것.
HTTP Method
- 자원에 대한 행위
- 의미론 적으로 행위를 규정하기 때문에 '실제 그 행위 자체가 수행됨'을 보장하진 않음
- HTTP verbs라고도 함.
- 즉 HTTP는 HTTP Method를 정의하여 주어진 자원에 수행하길 원하는 행동으로 나타냄.
HTTP Method 종류
GET
- 특정 자원의 표시를 요청하며, 오직 데이터를 받기만 함
POST
- 서버로 데이터를 전송하며, 서버에 변경사항을 만듦.
PUT
DELETE
Django REST Framework
Serialization(직렬화)
-
데이터 구조나 객체 상태를 동일하거나 다른 컴퓨터 환경에 저장하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정
-
예를들어 DRF의 Serializer는 장고의 Queryset 및 Model Instance와 같은 복잡한 데이터를 JSON, XML 유형으로 쉽게 변환 할 수 있는 Python 데이터 타입으로 만들어 줌.
api_view decorator
- view함수가 응답해야하는 http method목록을 설정
- 작성하지 않으면 기본적으로 GET 메소 드만 허용되며, 목록에 작성되지 않은 메서드일경우 405 Method Not Allowed를 반환