- 낮은 수준의 네트워크 배관을 전송 제어 프로토콜/인터넷 프로토콜 TCP/IP 라고함
- TCP/IP는 컴퓨터 간의 바이트를 전송하지만, 그것이 무엇을 의미하는지는 상관없다.
- 이 바이트를 해석하는 것은 더 높은 수준의 프로토콜 HTTP이다.
- 웹은 클라이언트-서버 시스템
- 클라이언트는 서버에 대한 요청(request)를 만듬
- 이 요청은 TCP/IC 커넥션을 열고 HTTP를 통해 URL과 다른 정보들을 보낸다.
- 그리고 요청에 대한 응답을 받는다.
- 응답 포맷 또한 HTTP에 의해 정의 됨.
- 가장 잘 알려진 웹 클라이언트는 웹 브라우저다.
- 웹 브라우저는 다양한 방법으로 HTTP요청을 만든다.
- 웹 브라우저의 주소창에 URL를 입력하거나 링크를 클릭하여 요청 가능.
- HTTP의 중요한점은 무상태 라는 것.
- 웹 브라우저에서 생성된 각 HTTP 커넥션은 모두 독립적.
- 캐싱 : 변하지 않는 원격 콘텐츠는 웹 클라에 저장하고 다시 서버로 부터 콘텐츠 다운로드를 피하기 위해 저장된 콘텐츠를 사용.
- 세션 : 쇼핑 웹사이트는 쇼핑 카드의 콘텐츠를 기억해야 한다.
- 인증 : 아이디와 비밀번호를 요구하는 사이트는 사용자가 로그인할 때, 이둘을 기억하여 사용자를 식별한다.
9.1.1 텔넷으로 테스트하기
9.2.2 파이썬 표준 웹 라이브러리
import urllib.request as ur url = 'http://quotesondesign.com/wp-json/posts' conn = ur.urlopen(url) print(conn)
<http.client.HTTPResponse object at 0x7f1bb01aee48>
data = conn.read()
print(data)
b’’
- 이코드로 서버에 TCP/IP 커넥션을 열었고, HTTP요청을 만들었고, HTTP응답을 받았다.
- HTTP상태 코드는 응답에서 가장 중요한 부분중 하나다.
print(conn.status)
200
- 1xx(조건부 응답) - 요청은 받았지만, 추가 정보가 필요하다.
- 2xx(성공) - 성공적으로 처리, 200이외의 모든 성공 코드는 추가사항을 전달함.
- 3xx(리다이렉션) - 리소스가 이전되어 클라이언트에 새로운 URL을 응답해줌.
- 4xx(클라이언트 에러) - 404는 클라이언트 측에 문제가 있다.
- 5xx(서버 에러) - 500은 서버 에러를 나타낸다. 웹 서버와 백엔드 애플이케이션 서버가 연결되어 있지않다면 502를 본다.
print(conn.getheader('Content-type'))
application/json; charset=UTF-8
for key, value in conn.getheaders(): print(key, value)
Server nginx Date Wed, 28 Feb 2018 10:26:07 GMT Content-Type application/json; charset=UTF-8 Content-Length 322 Connection close X-Powered-By PHP/5.4.13 X-Content-Type-Options nosniff Link </wp-json/posts?page=2>; rel=”next”, https://quotesondesign.com/wp-json/posts/2463; rel=”item”; title=”Antoine de Saint-Exupery” X-WP-Total 1065 X-WP-TotalPages 1065 Last-Modified Wed, 07 Feb 2018 14:46:58 GMT X-Powered-By PleskLin
9.1.3 표준 라이브러리를 넘어서 :Request
import requests url = 'http://quotesondesign.com/wp-json/posts' resp = requests.get(url) resp
<Response [200]>
print(resp.text)
[{“ID”:2463,”title”:”Antoine de Saint-Exupery”,”content”:”<p>If you want to build a ship, don’t drum up people to collect wood and don’t assign them tasks and work, but rather teach them to long for the endless immensity of the sea.<\/p>\n”,”link”:”https:\/\/quotesondesign.com\/antoine-de-saint-exupery-4\/”}]
Comments