Python で HTTP リクエストする方法はいくつか考えられますが、結論から言うと Requests が使いやすいと思います。
標準ライブラリ
Python3 の標準ライブラリの中に urllib があり、これを使えば HTTP リクエストを送信することができます。
GET メソッド
1 2 3 4 |
import urllib url = 'https://api.example.com/get?id=123' response = urllib.request.openurl(url) |
ここで得られた response を JSON 形式で取得するときには、同じく標準ライブラリである json が使えます。
1 2 3 |
import json json_data = json.loads(response.read()) |
Python2 で同じことがしたい場合は、urllib.request ではなく urllib2 を利用することになります。
Requests
Python の urllib.request のドキュメントを見ると、より高水準のライブラリとして Requests の利用が推奨されています。
GET メソッド
1 2 3 4 5 |
import requests params = {'id' : '123'} url = 'https://api.example.com/get' response = requests.get(url, params=params) |
params でクエリを指定すると自動でエンコードして URL を生成します。
また、この結果を JSON 形式で取得するときに他のライブラリを使う必要がなく、とても簡潔に書くことができます。
1 |
json_data = response.json() |
POST メソッド
1 2 3 4 5 |
import requests payload = {'code' : 'a5g4a654'} url = 'https://api.example.com/post' response = requests.post(url, data=payload) |
GET のときと同じような形で POST もできます。
もし、urllib で POST しようと思ったら次のような書き方になります。(たぶん)
1 2 3 4 |
import urllib url = 'https://api.example.com/get?id=123' response = urllib.request.Request(url, method='POST') |
urllib ではメソッドを指定しなければ GET メソッドでの送信になります。
最後に
urllib に比べると Requests のほうが感覚的に使いやすいのでおすすめです!