PythonでHTTPリクエストをrequestsで行う方法
Python Requestsを利用することで、PythonプログラムからHTTP/1.1リクエストを簡単に送信できます。
インストール
pip install requests
利用方法
GETメソッド
以下のコードでは、GET
リクエストを送信し、サーバーからのレスポンスを取得します。
import requests
# URLにGETリクエストを送信し、レスポンスを取得
response = requests.get("http://example.com/")
# レスポンスのステータスコードと内容を表示
print(response.status_code, response.text)
辞書でパラメータを渡す場合
params = {
'type': type
}
response = requests.get("http://example.com/", params=params)
POSTメソッド
以下のコードでは、POST
リクエストを送信し、サーバーからのレスポンスを取得します。
import requests
# POSTリクエストを送信するデータを定義
data = {"key": "value"}
# POSTリクエストを送信
response = requests.post("http://example.com/api/data", json=data)
# レスポンスのステータスコードを確認
if response.status_code == 200:
# レスポンスの内容を表示
print(response.text)
else:
print("リクエストが失敗しました。")
requests.get()
やrequests.post()
のレスポンスをJSONデータとして扱う場合はresponse.json()
を使用します。
import requests
# GETリクエストを送信し、JSONデータを取得
response = requests.get("http://example.com/api/data")
# レスポンスのステータスコードを確認
if response.status_code == 200:
# レスポンスのJSONデータを取得
res_json = response.json()
# JSONデータを利用する
print(res_json["key"])
else:
print("リクエストが失敗しました。")
実行例
以下のコードは、各メソッドの実行とレスポンスの例です。
import json
import requests
response = requests.get('http://localhost:8080/get-status')
print(response.status_code, response.text) # 200 OK
response = requests.get('http://localhost:8080/get-text')
print(response.status_code, response.text) # 200 hello text
payload = {
'p1': '1000',
'p2': '0.8'
}
response = requests.get('http://localhost:8080/get-query', params=payload)
print(response.status_code, response.text) # 200 1000, 0.8
response = requests.post('http://localhost:8080/post-status', json=payload)
print(response.status_code, response.text) # 200
response = requests.post('http://localhost:8080/post-json', json=payload)
print(response.status_code, response.text) # 200 {"p1":"1000","p2":"0.8"}
json_obj = response.json()
print(json.dumps(json_obj, indent=2))
# {
# "p1": "1000",
# "p2": "0.8"
# }
リクエスト先のサーバ側は次のような内容です。(Node.js+Expressで起動)
app.get('/get-status', (request, response) => {
response.sendStatus(200);
});
app.get('/get-text', (request, response) => {
response.send('hello text');
});
app.get('/get-query', (request, response) => {
const p1 = request.query.p1;
const p2 = request.query.p2;
response.send(`${p1}, ${p2}`);
});
app.post('/post-status', (request, response) => {
const { username } = request.body;
response.sendStatus(200);
});
app.post('/post-json', (request, response) => {
const json = request.body;
response.send(json);
});