logo

Python を使用した GET および POST リクエスト

この投稿では、Python の 2 つの HTTP (ハイパーテキスト転送プロトコル) リクエスト メソッド GET リクエストと POST リクエスト、および Python でのそれらの実装について説明します。 

HTTPとは何ですか?  

HTTP は、クライアントとサーバー間の通信を可能にするために設計されたプロトコルのセットです。これは、クライアントとサーバー間の要求/応答プロトコルとして機能します。 Web ブラウザがクライアントとなり、Web サイトをホストするコンピュータ上のアプリケーションがサーバーとなることがあります。したがって、サーバーからの応答をリクエストするには、主に 2 つの方法があります。

  1. 得る : サーバーにデータを要求します。
  2. 役職 : 処理対象のデータをサーバーに送信します。

以下は、GET メソッドと POST メソッドの基本概念を説明する簡単な図です。



Python を使用した GET および POST リクエスト' src='//techcodeview.com/img/python/28/get-and-post-requests-using-python.webp' title= 

 ここで HTTP リクエストを実行します パイソン 次のようないくつかの HTTP ライブラリを使用できます。

上記のライブラリの中で最もエレガントで単純なものは Requests です。この記事ではリクエスト ライブラリを使用します。 Requests ライブラリをダウンロードしてインストールするには、次のコマンドを使用します。

pip install requests

Getリクエストを行う

上の例では、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)) 

出力:

Python を使用した GET および POST リクエスト

推測すべき重要なポイント:

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 メソッドを使用しないでください。
クイズの作成