Python

Pythonでrequestsを使ってREST(GET/POST)を試してみる

Python

Pythonには標準のurllibモジュールを使うことでREST APIへのアクセスが可能です。

ただし私はサードパーティーから出ているrequestsモジュールを使うほうがシンプルに使えて何かと便利なので、通常はrequestsモジュールを使ってます。

今回も自分へのメモとなります。

requestsモジュールのインストール

標準ではインストールされてません。

(base) C:\PythonProject>pip install requests
Requirement already satisfied: requests in c:\users\user\anaconda3\lib\site-packages (2.24.0)
Requirement already satisfied: idna<3,>=2.5 in c:\users\user\anaconda3\lib\site-packages (from requests) (2.10)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in c:\users\user\anaconda3\lib\site-packages (from requests) (1.25.11)
Requirement already satisfied: certifi>=2017.4.17 in c:\users\user\anaconda3\lib\site-packages (from requests) (2020.12.5)
Requirement already satisfied: chardet<4,>=3.0.2 in c:\users\user\anaconda3\lib\site-packages (from requests) (3.0.4)

GETの利用

GETで呼び出す例です。
・requests.getで呼び出し
・paramsで引数を指定する
・リクエストの結果はstatus_codeやjsonなどで指定して取得できる

import requests

payload = {'key1': 'value1', 'key2': 'value2'}

r = requests.get('http://httpbin.org/get', params=payload)
print(r.status_code)
print(r.text)
print(r.json())

// 結果
200
{
  "args": {
    "key1": "value1", 
    "key2": "value2"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.24.0", 
    "X-Amzn-Trace-Id": "Root=1-60628027-4d47a5077c1009970f13d3ba"
  }, 
  "origin": "114.150.171.131", 
  "url": "http://httpbin.org/get?key1=value1&key2=value2"
}

{'args': {'key1': 'value1', 'key2': 'value2'}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.24.0', 'X-Amzn-Trace-Id': 'Root=1-60628027-4d47a5077c1009970f13d3ba'}, 'origin': '114.150.171.131', 'url': 'http://httpbin.org/get?key1=value1&key2=value2'}

POSTの利用

POSTもGETとほとんど同じになります。
・requests.postで呼び出し
・dataで引数を指定する

import requests

payload = {'key1': 'value1', 'key2': 'value2'}

r = requests.post('http://httpbin.org/post', data=payload)
print(r.status_code)
print(r.text)
print(r.json())

// 結果
省略
・
・

まとめ

PUTやDELETEなどの場合も同様に簡単に指定することができます。

Pythonのオススメ勉強方法

私がオススメするPython初心者向けの最初に購入すべき書籍は「シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全です。

シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全

この書籍は実際にシリコンバレーの一流エンジニアとして活躍している酒井潤さんが書いた本です。

内容も初心者から上級者までまとめられており、各Lessonも長すぎずに分かりやすくまとめられているので、初心者の方にもおすすめです。

シリコンバレー一流プログラマーが教える Pythonプロフェッショナル大全

今回は以上となります。

コメント