Python-HTTP 요청
http 또는 Hyper Text Transfer Protocol은 클라이언트 서버 모델에서 작동합니다. 일반적으로 웹 브라우저는 클라이언트이고 웹 사이트를 호스팅하는 컴퓨터는 서버입니다. 파이썬에서는 http 요청을 생성하기 위해 요청 모듈을 사용합니다. 단순한 요청 및 응답 데이터를 넘어 http 통신의 여러 측면을 처리 할 수있는 매우 강력한 모듈입니다. 인증, 압축 / 압축 해제, 청크 요청 등을 처리 할 수 있습니다.
HTTP 클라이언트는 다음 형식을 포함하는 요청 메시지의 형태로 HTTP 요청을 서버에 보냅니다.
- 요청 라인
- 0 개 이상의 헤더 (일반 | 요청 | 엔티티) 필드 뒤에 CRLF가 표시됨
- 헤더 필드의 끝을 나타내는 빈 줄 (즉, CRLF 앞에 아무것도없는 줄)
- 선택적으로 메시지 본문
다음 섹션에서는 HTTP 요청 메시지에 사용되는 각 엔티티에 대해 설명합니다.
요청 라인
Request-Line은 메서드 토큰으로 시작하고 Request-URI와 프로토콜 버전이 이어지며 CRLF로 끝납니다. 요소는 공백 SP 문자로 구분됩니다.
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
요청 라인에 언급 된 각 부분에 대해 논의 해 보겠습니다.
요청 방법
요청 method 주어진 자원에 대해 수행 할 방법을 나타냅니다. Request-URI. 이 방법은 대소 문자를 구분하며 항상 대문자로 언급해야합니다. 다음 표에는 HTTP / 1.1에서 지원되는 모든 메소드가 나열되어 있습니다.
SN | 방법 및 설명 |
---|---|
1 | GET GET 메소드는 주어진 URI를 사용하여 주어진 서버에서 정보를 검색하는 데 사용됩니다. GET을 사용하는 요청은 데이터 만 검색해야하며 데이터에 다른 영향을주지 않아야합니다. |
2 | HEAD GET과 동일하지만 상태 행과 헤더 섹션 만 전송합니다. |
삼 | POST POST 요청은 HTML 양식을 사용하여 고객 정보, 파일 업로드 등과 같은 데이터를 서버로 보내는 데 사용됩니다. |
4 | PUT 대상 리소스의 모든 현재 표현을 업로드 된 콘텐츠로 바꿉니다. |
5 | DELETE URI가 제공하는 대상 리소스의 현재 표현을 모두 제거합니다. |
6 | CONNECT 주어진 URI로 식별되는 서버에 대한 터널을 설정합니다. |
7 | OPTIONS 대상 자원에 대한 통신 옵션을 설명하십시오. |
8 | TRACE 대상 리소스에 대한 경로와 함께 메시지 루프백 테스트를 수행합니다. |
요청 -URI
Request-URI는 Uniform Resource Identifier이며 요청을 적용 할 리소스를 식별합니다. 다음은 URI를 지정하는 데 가장 일반적으로 사용되는 양식입니다.
Request-URI = "*" | absoluteURI | abs_path | authority
SN | 방법 및 설명 |
---|---|
1 | 별표 *HTTP 요청이 특정 리소스에 적용되지 않고 서버 자체에 적용되는 경우에 사용되며 사용 된 방법이 리소스에 반드시 적용되지 않을 때만 허용됩니다. 예를 들면 : OPTIONS * HTTP/1.1 |
2 | 그만큼 absoluteURI프록시에 HTTP 요청을 할 때 사용됩니다. 프록시는 유효한 캐시에서 요청 또는 서비스를 전달하고 응답을 반환하도록 요청됩니다. 예를 들면 : GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1 |
삼 | Request-URI의 가장 일반적인 형식은 원본 서버 또는 게이트웨이에서 리소스를 식별하는 데 사용됩니다. 예를 들어 원본 서버에서 직접 리소스를 검색하려는 클라이언트는 "www.w3.org"호스트의 포트 80에 대한 TCP 연결을 만들고 다음 줄을 보냅니다. GET /pub/WWW/TheProject.html HTTP/1.1 Host: www.w3.org 절대 경로는 비워 둘 수 없습니다. 원래 URI에 아무것도 없으면 "/"(서버 루트)로 지정해야합니다. |
Python 요청 사용
http 요청에 대해 학습하기 위해 모듈 요청을 사용합니다.
pip install requests
아래 예에서는 간단한 GET 요청의 경우를보고 응답 결과를 인쇄합니다. 처음 300 자만 인쇄하도록 선택합니다.
# How to make http request
import requests as req
r = req.get('http://www.tutorialspoint.com/python/')
print(r.text)[0:300]
위의 프로그램을 실행하면 다음과 같은 결과가 나옵니다.
<!DOCTYPE html>
<!--[if IE 8]><html class="ie ie8"> <![endif]-->
<!--[if IE 9]><html class="ie ie9"> <![endif]-->
<!--[if gt IE 9]><!--> <html> <!--<![endif]-->
<head>
<!-- Basic -->
<meta charset="utf-8">
<title>Python Tutorial</title>
<meta name="description" content="Python Tutorial