이 게시물에서는 Python의 두 가지 HTTP(Hypertext Transfer Protocol) 요청 방법인 GET 및 POST 요청과 Python에서의 구현에 대해 설명합니다.
HTTP란 무엇입니까?
HTTP는 클라이언트와 서버 간의 통신을 가능하게 하기 위해 설계된 프로토콜 집합입니다. 클라이언트와 서버 간의 요청-응답 프로토콜로 작동합니다. 웹 브라우저는 클라이언트가 될 수 있고 웹 사이트를 호스팅하는 컴퓨터의 응용 프로그램은 서버가 될 수 있습니다. 따라서 서버로부터 응답을 요청하는 방법에는 주로 두 가지 방법이 있습니다.
- 얻다 : 서버에 데이터를 요청합니다.
- 우편 : 처리할 데이터를 서버에 제출합니다.
다음은 GET 및 POST 메소드의 기본 개념을 설명하는 간단한 다이어그램입니다.
이제 HTTP 요청을 만들려면 파이썬 다음과 같은 여러 HTTP 라이브러리를 사용할 수 있습니다.
위에 나열된 라이브러리 중 가장 우아하고 간단한 것은 요청입니다. 이 기사에서는 요청 라이브러리를 사용할 것입니다. Requests 라이브러리를 다운로드하고 설치하려면 다음 명령을 사용하십시오.
pip install requestsGet 요청하기
위의 예에서는 Google Maps API에 GET 요청을 전송하여 특정 위치의 위도 경도와 형식화된 주소를 찾습니다. 안 API (응용 프로그래밍 인터페이스)를 사용하면 제한된 방식으로 프로그램의 내부 기능에 액세스할 수 있습니다. 그리고 대부분의 경우 제공된 데이터는 다음과 같습니다. JSON(자바스크립트 객체 표기법) 형식(파이썬에서 사전 객체로 구현됩니다!)
Python# importing the requests library import requests # api-endpoint URL = 'http://maps.googleapis.com/maps/api/geocode/json' # location given here location = 'delhi technological university' # defining a params dict for the parameters to be sent to the API PARAMS = {'address':location} # sending get request and saving the response as response object r = requests.get(url = URL params = PARAMS) # extracting data in json format data = r.json() # extracting latitude longitude and formatted address # of the first matching location latitude = data['results'][0]['geometry']['location']['lat'] longitude = data['results'][0]['geometry']['location']['lng'] formatted_address = data['results'][0]['formatted_address'] # printing the output print('Latitude:%snLongitude:%snFormatted Address:%s' %(latitude longitudeformatted_address))
산출:
추론해야 할 중요한 사항:
PARAMS = {'address':location}GET 요청의 URL에는 일반적으로 일부 매개변수가 포함되어 있습니다. 요청의 경우 라이브러리 매개변수를 사전으로 정의할 수 있습니다. 이러한 매개변수는 나중에 구문 분석되어 기본 URL 또는 API 엔드포인트에 추가됩니다. 매개변수의 역할을 이해하려면 인쇄해 보세요. r.url 응답 객체가 생성된 후. 다음과 같은 내용이 표시됩니다.
http://maps.googleapis.com/maps/api/geocode/json?address=delhi+technological+universityGET 요청이 이루어진 실제 URL입니다.
r = requests.get(url = URL params = PARAMS)여기서는 요청-응답을 저장할 응답 객체 'r'을 만듭니다. GET 요청을 보내기 때문에 request.get() 메소드를 사용합니다. 우리가 전달하는 두 가지 인수는 URL과 매개변수 사전입니다.
data = r.json()이제 응답 개체에서 데이터를 검색하려면 원시 응답 콘텐츠를 JSON 유형 데이터 구조로 변환해야 합니다. 이는 json() 메소드를 사용하여 달성됩니다. 마지막으로 JSON 유형 객체를 구문 분석하여 필요한 정보를 추출합니다.
POST 요청하기
이 예에서는 붙여넣는 방법을 설명합니다. 소스_코드 에게 Pastebin.com PASTEBIN API에 POST 요청을 보냅니다. 먼저 API 키를 생성해야 합니다. 여기서 가입하세요 그런 다음 귀하의 API 키는 여기에 있습니다.
Python# importing the requests library import requests # defining the api-endpoint API_ENDPOINT = 'https://pastebin.com/api/api_post.php' # your API key here API_KEY = 'XXXXXXXXXXXXXXXXX' # your source code here source_code = ''' print('Hello world!') a = 1 b = 2 print(a + b) ''' # data to be sent to api data = {'api_dev_key': API_KEY 'api_option': 'paste' 'api_paste_code': source_code 'api_paste_format': 'python'} # sending post request and saving response as response object r = requests.post(url=API_ENDPOINT data=data) # extracting response text pastebin_url = r.text print('The pastebin URL is:%s' % pastebin_url)
이 코드의 중요한 기능:
data = {'api_dev_key':API_KEY
'api_option':'paste'
'api_paste_code':source_code
'api_paste_format':'python'}
여기서도 일부 데이터를 API 서버에 전달해야 합니다. 우리는 이 데이터를 사전으로 저장합니다.
r = requests.post(url = API_ENDPOINT data = data)여기서는 요청-응답을 저장할 응답 객체 'r'을 만듭니다. POST 요청을 보내기 때문에 request.post() 메소드를 사용합니다. 우리가 전달하는 두 가지 인수는 URL과 데이터 사전입니다.
pastebin_url = r.text이에 대한 응답으로 서버는 전송된 데이터를 처리하고 소스_코드 이는 다음을 통해 간단히 액세스할 수 있습니다. r.text.
요청.게시물 이 메서드는 Facebook Graph API 등을 사용하여 FB 타임라인에 게시된 웹 양식을 작성하고 제출하는 것과 같은 다른 많은 작업에도 사용될 수 있습니다.
다음은 숙고해야 할 몇 가지 중요한 사항입니다.
- 메소드가 GET이면 모든 양식 데이터가 URL로 인코딩되어 행동 쿼리 문자열 매개변수로서의 URL입니다. POST 양식 데이터가 메시지 본문 HTTP 요청의
- GET 메소드에서 매개변수 데이터는 요청 라인(URL)에 넣을 수 있는 것으로 제한됩니다. 2K 미만의 매개변수를 사용하는 것이 가장 안전하며 일부 서버는 최대 64K까지 처리합니다. POST 방식에서는 데이터를 전송하기 때문에 POST 방식에서는 이러한 문제가 없습니다. 메시지 본문 URL이 아닌 HTTP 요청의 내용입니다.
- GET 방식으로 전송되는 데이터에는 ASCII 문자만 허용됩니다. POST 메서드에는 이러한 제한이 없습니다.
- GET은 전송된 데이터가 URL의 일부이기 때문에 POST에 비해 덜 안전합니다. 따라서 비밀번호나 기타 민감한 정보를 보낼 때는 GET 메서드를 사용하면 안 됩니다.