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);
});
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です