Computer Science/BackEnd

Django for APIs | #2 Web APIs

토마토. 2022. 9. 26. 13:56

 

Django for APIs
chapter 1. 

Web APIs
Web APIs

API를 작성하기 전에 web이 실제로 어떻게 작동하는지 아는 게 매우 중요하다. 

Web API는 HTTP, WWW, IP/TCP 등 수많은 웹 기술에 의존하기 때문이다. 

이번 장에서는 Web API의 기본 용어인 endpoint, resource, HTTP verb, HTTP statuc code, REST에 대해 알아볼 것이다.

 

World Wide Web

인터넷은 1960년대부터 존재한 서로 연결된 컴퓨터 네트워크 시스템이다. 

그러나 초기 인터넷은 주로 정부, 군사, 과학자들의 고립된 네트워크로 제한되었다. 

1980년대까지는 소수의 인터넷 노드가 모든 트래픽에 전력을 공급하고, 인터넷을 사용하는 컴퓨터는 동일한 소규모 네트워크 안에 있었다. 

그러다 1989년 CERN의 과학자 팀 버너스리가 HTTP를 발명하고, 현대 WWW를 제안했다. 그의 주요한 통찰은 Hyperlink를 이용하는 하이퍼텍스트 시스템을 인터넷에 가져올 수 있다는 것이다. 이렇게 그는 웹 페이지라는 개념을 도입했다. 

 

URLs

URL(Uniform Resource Locator)는 인터넷 자원의 주소를 나타낸다. 

Google 홈페이지에 들어가고 싶다고 하자. 그러면 우리는 브라우저에 URL 주소를 타이핑한다. 브라우저는 인터넷에 request 를 요청하고, response로 돌아온 data가 구글 홈페이지로 랜더링된다. 

request와 respond 패턴은 웹 커뮤니케이션의 주요한 개념이다. 클라이언트는 request를 보내고, 서버는 request에 응답하여 response를 보낸다. 

웹 커뮤니케이션은 HTTP를 통해 일어나기 때문에 이를 HTTP Request, HTTP Response라고 부른다. 

URL에도 여러 구성요소가 있다. 예를 들어, https://www.google.com 을 살펴보자. 

첫번째 부분인 https는 scheme 즉, 어떤 방식으로 웹 브라우저가 자원에 접근했는지를 알려준다. ftp는 파일, smtp는 이메일 등이 있다. 

다음 부분인 www.google.com  은 사이트의 이름, hostname을 가리킨다. 

많은 웹페이지들이 path를 추가적으로 제공한다. 예를 들면, https://www.python.org 가 메인 페이지라면, https://www.python.org/about/ 으로 하위 페이지에 접속할 수 있는 것이다. 

 

요약하자면, 다음과 같다. 

  • scheme - https
  • hostname - www.python.org
  • optional path - /about/

 

Internet Protocol Suite

Internet Protocol Suite를 통해 url을 리소스로 바꿔올 수 있다. 

간단하게 설명하자면, 웹 브라우저에 https://www.google.com/ 을 입력하였을 때, 브라우저는 DNS(Domain name service)를 이용하여 도메인 네임을 IP 주소로 변환한다. IP주소는 인터넷 장치를 나타내는 번호이다. 

브라우저가 도메인에 대한 IP 주소를 가진 뒤에는 서버와 연결한다. 안전한 연결을 위해 TCP Transmission Control Protocol 연결을 진행하는데, TCP 통신은 순서가 있고 오류가 검사된 전달을 위해 3-way-handshake를 진행한다. 

 

HTTP Verbs

웹페이지에 대해 하는 네 가지 행동 CRUD Create Read Update Delete

HTTP Protocol에는 수많은 request method가 있고, 그 중 CRUD function으로 POST, GET, PUT, DELETE가 있다. 

 

Endpoints

endpoint는 웹 API가 데이터를 노출하는 actions를 가지고 있는 url이다. 

예를 들면, 

https://www.mysite.com/api/users 

https://www.mysite.com/api/users/<id> 

가 있다. 

 

HTTP

HTTP는 TCP 연결이 있는 두 컴퓨터 간의 request-response 프로토콜이다. 

request를 보내는 컴퓨터를 클라이언트, 

response를 보내는 컴퓨터를 서버라고 한다. 

이때 클라이언트는 웹 브라우저도 되고, iOS, Android 앱 등일 수도 있다. 

 

모든 HTTP 메시지는 request method, header, body로 구성된다. 

 

Status Codes
  • 2xx success
  • 3xx redirection
  • 4xx client error
  • 5xx server error

 

Statelessness

HTTP 는 stateless protocol이다. 

request/response pair는 이전에 주고받은 request/response pair와 완전히 독립적이다. 

stateless protocol이기 때문에 신호 손실을 막을 수 있고 탄력적으로 운영할 수 있지만, 

웹 애플리케이션에서 중요한 상태 관리를 하기 어렵다. 

 

REST

2000년대에 제안된 아키텍쳐이다. 

REpresentational State Transfer(REST)