この投稿では、Python の 2 つの HTTP (ハイパーテキスト転送プロトコル) リクエスト メソッド GET リクエストと POST リクエスト、および Python でのそれらの実装について説明します。
HTTPとは何ですか?
HTTP は、クライアントとサーバー間の通信を可能にするために設計されたプロトコルのセットです。これは、クライアントとサーバー間の要求/応答プロトコルとして機能します。 Web ブラウザがクライアントとなり、Web サイトをホストするコンピュータ上のアプリケーションがサーバーとなることがあります。したがって、サーバーからの応答をリクエストするには、主に 2 つの方法があります。
- 得る : サーバーにデータを要求します。
- 役職 : 処理対象のデータをサーバーに送信します。
以下は、GET メソッドと POST メソッドの基本概念を説明する簡単な図です。
ここで HTTP リクエストを実行します パイソン 次のようないくつかの HTTP ライブラリを使用できます。
上記のライブラリの中で最もエレガントで単純なものは Requests です。この記事ではリクエスト ライブラリを使用します。 Requests ライブラリをダウンロードしてインストールするには、次のコマンドを使用します。
pip install requestsGetリクエストを行う
上の例では、Google Maps API に GET リクエストを送信することで、指定された場所の緯度経度と書式設定された住所を検索します。アン API (アプリケーション プログラミング インターフェイス) を使用すると、限定された方法でプログラムの内部機能にアクセスできます。ほとんどの場合、提供されるデータは次のとおりです。 JSON(JavaScript オブジェクト記法) 形式 (Python では辞書オブジェクトとして実装されています!)。
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+universityこれは、GET リクエストが行われる実際の URL です。
r = requests.get(url = URL params = PARAMS)ここでは、リクエストとレスポンスを格納するレスポンス オブジェクト「r」を作成します。 GET リクエストを送信するため、requests.get() メソッドを使用します。渡す 2 つの引数は、URL とパラメーター ディクショナリです。
data = r.json()ここで、応答オブジェクトからデータを取得するには、生の応答コンテンツを JSON タイプのデータ構造に変換する必要があります。これは、json() メソッドを使用して実現されます。最後に、JSON タイプのオブジェクトを解析して必要な情報を抽出します。
POSTリクエストを行う
この例では、 ソースコード に ペーストビン.com POST リクエストを PASTEBIN API に送信することによって。まず最初に、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 リクエストを送信するため、requests.post() メソッドを使用します。渡す 2 つの引数は、URL とデータ ディクショナリです。
pastebin_url = r.textそれに応じて、サーバーは送信されたデータを処理し、あなたのページのpastebin_URLを送信します。 ソースコード 簡単にアクセスできます r.テキスト。
リクエスト.ポスト このメソッドは、Facebook Graph API などを使用して FB タイムラインに投稿する Web フォームに入力して送信するなど、他の多くのタスクにも使用できます。
考慮すべき重要な点がいくつかあります。
- メソッドが GET の場合、すべてのフォーム データが URL にエンコードされ、 アクション クエリ文字列パラメーターとしての URL。 POST フォームを使用すると、データが メッセージ本文 HTTPリクエストの。
- GET メソッドでは、パラメータ データはリクエスト ライン (URL) に詰め込めるものに制限されます。 2K 未満のパラメータを使用するのが最も安全ですが、サーバーによっては最大 64K まで処理します。POST メソッドではデータを送信するため、そのような問題は発生しません。 メッセージ本文 URL ではなく HTTP リクエストの。
- GET メソッドで送信できるデータは ASCII 文字のみです。 POST メソッドにはそのような制限はありません。
- GET は、送信されるデータが URL の一部であるため、POST に比べて安全性が低くなります。したがって、パスワードやその他の機密情報を送信する場合は、GET メソッドを使用しないでください。