Python開発入門31 PythonのRequestsライブラリを使ったHTTPリクエスト

Python

はじめに

WebサービスやAPIと連携する際、PythonでのHTTPリクエスト処理は欠かせません。その中で最も使いやすいライブラリがRequestsです。

Requestsは、PythonでHTTPリクエストを簡単に送信し、レスポンスを処理するためのライブラリです。この記事では、Requestsの基本的な使い方、便利な機能、トラブルシューティングについてわかりやすく解説します。

Requestsライブラリとは

概要

Requestsは、Python標準ライブラリのurllibの代替として設計されたシンプルで直感的なHTTPリクエストライブラリです。複雑なコードを書くことなく、HTTPリクエストの送信、レスポンスの処理が可能です。

Requestsライブラリの主な特徴

  1. シンプルな構文
    短いコードで直感的に操作可能。
  2. 豊富なHTTPメソッドのサポート
    GET、POST、PUT、DELETE、HEADなどのリクエストを簡単に送信。
  3. セッション管理
    Cookieや認証情報の管理が可能。
  4. 強力なエラーハンドリング
    ステータスコードの確認や例外処理が簡単。

Requestsのインストール

RequestsはPyPIで提供されており、以下のコマンドでインストールできます:

pip install requests

インストールの確認:
インストール後、以下のコマンドでバージョンを確認できます:

pip show requests

出力例:

Name: requests
Version: 2.28.1
Summary: Python HTTP for Humans.

基本的な使い方

GETリクエスト

GETリクエストは、サーバーからデータを取得するために使用します。

import requests

response = requests.get("https://jsonplaceholder.typicode.com/posts/1")
print(response.status_code)  # ステータスコード
print(response.json())       # レスポンスのJSONデータ

説明:

  • requests.getは指定されたURLにGETリクエストを送信します。
  • response.status_codeでHTTPステータスコードを確認。
  • response.json()でレスポンスをJSON形式で取得します。

POSTリクエスト

POSTリクエストは、サーバーにデータを送信するために使用します。

import requests

data = {"title": "foo", "body": "bar", "userId": 1}
response = requests.post("https://jsonplaceholder.typicode.com/posts", json=data)
print(response.status_code)  # ステータスコード
print(response.json())       # サーバーからのレスポンス

説明:

  • json=dataで送信データを指定します。
  • サーバーからのレスポンスもJSON形式で取得可能です。

ヘッダーの追加

カスタムヘッダーを追加する場合、以下のように設定します:

headers = {"Authorization": "Bearer YOUR_ACCESS_TOKEN"}
response = requests.get("https://api.example.com/data", headers=headers)
print(response.text)

説明:

  • headers引数でカスタムヘッダーを指定します。
  • 認証情報やAPIキーを送信する際に使用します。

タイムアウトの設定

リクエストにタイムアウトを設定することで、長時間待機を回避できます:

response = requests.get("https://api.example.com/data", timeout=5)

説明:

  • timeout=5は、リクエストが5秒以上かかった場合にエラーをスローします。

応用的な使い方

セッション管理

複数のリクエストでCookieやヘッダーを共有する場合、セッションを使用します。

with requests.Session() as session:
    session.headers.update({"Authorization": "Bearer YOUR_ACCESS_TOKEN"})
    response = session.get("https://api.example.com/data")
    print(response.text)

説明:

  • requests.Session()を使用すると、複数のリクエスト間で状態を共有できます。

ファイルのアップロード

ファイルをサーバーにアップロードする場合:

files = {"file": open("example.txt", "rb")}
response = requests.post("https://api.example.com/upload", files=files)
print(response.status_code)

説明:

  • files引数でファイルを送信できます。
  • ファイルオブジェクトをopen()で開き、送信します。

プロキシの利用

プロキシを通じてリクエストを送信する場合:

proxies = {"http": "http://proxy.example.com:8080"}
response = requests.get("https://api.example.com/data", proxies=proxies)

説明:

  • proxies引数でプロキシサーバーを指定します。

エラーハンドリング

ステータスコードの確認

ステータスコードを手動で確認することでエラー処理が可能です:

response = requests.get("https://api.example.com/data")
if response.status_code == 200:
    print("Success!")
else:
    print(f"Error: {response.status_code}")

例外処理

リクエスト中に発生する例外を処理するには:

try:
    response = requests.get("https://api.example.com/data", timeout=5)
    response.raise_for_status()
except requests.exceptions.RequestException as e:
    print(f"An error occurred: {e}")

説明:

  • raise_for_status()は、HTTPエラーが発生した場合に例外をスローします。

Requestsを使う際の注意点

  1. 認証情報の管理
    APIキーやトークンを含むリクエストを送信する際、機密情報が外部に漏れないように注意しましょう。
  2. 適切なタイムアウト設定
    タイムアウトを設定することで、リクエストの待機時間を制限できます。
  3. レスポンスの検証
    サーバーからのレスポンスデータを適切に検証することで、エラーや不正データを回避できます。

まとめ

Requestsライブラリは、PythonでのHTTPリクエストを簡単かつ効率的に操作するための非常に強力なツールです。この記事で紹介した基本操作や応用例を活用して、Web APIや外部サービスとの連携をスムーズに行いましょう!

最後まで読んで頂きありがとうございます!

面白かった、参考になった、と少しでも感じて頂けましたら
ブログランキング上位になるための応援をして頂けないでしょうか!
今後も面白い記事を更新していきますので、ぜひ宜しくおねがいします!
Pythonプログラミング

コメント