【Python】requests.postとは?使い方や指定オプションまでわかりやすく解説

PythonでAPIとやりとりする際に非常に便利なのが requests ライブラリです。

その中でも .post() は「データを送信する」という操作を行うための基本的なメソッドです。

この記事では .post() の基本的な使い方から、便利なオプション、実際の活用シーンまで詳しく解説します。

.post()とは?

.post() は、HTTPのPOSTリクエストを送るためのメソッドです。

サーバーにデータを送りたい時、例えば、

  • 「ログイン情報を送る」
  • 「フォームの内容を送信する」

といった場面で使われます。

Pythonでは requests.post() を使って、URLと一緒に送りたいデータを渡すだけでPOSTリクエストを送ることができます。

使い方

基本的な使い方

まずは、最も基本的なPOSTリクエストのコードを見てみましょう。

このコードでは:

  • https://httpbin.org/post というテスト用のAPIに
  • 名前と年齢のデータを辞書形式で data に渡して送信しています

結果として、送信された内容をサーバーが受け取り、そのレスポンスが返ってきます。

status_code でステータス(200など)を確認でき、text でレスポンスの内容を見ることができます。

具体例:JSONデータを送信する

APIによっては、data ではなく json 形式での送信が求められることもあります。

その場合は json= を使います。

このコードでは:

  • ログイン情報のようなデータをJSON形式でサーバーに送信
  • response.json() を使って、レスポンスを辞書形式で取得

json= を使うと、ヘッダーに Content-Type: application/json が自動で追加され、API側でも正しく受け取ってもらえます。

具体例:ヘッダーを追加する

APIによっては、特定のヘッダー(認証トークンなど)をつけて送信する必要があります。

このように、headers= 引数で辞書形式のヘッダーを追加できます。

特にAPI連携では、トークン認証やAPIキーなどをヘッダーで渡すことが一般的です。

使えるオプション一覧

requests.post() では、以下のようなオプションが使えます。

引数 説明
data= フォーム形式のデータを送信(辞書または文字列)
json= JSON形式のデータを送信(辞書)
headers= 任意のHTTPヘッダーを追加
timeout= タイムアウト時間を秒数で指定(例:timeout=5
auth= ベーシック認証(例:auth=("user", "pass")
cookies= クッキー情報を追加

これらを組み合わせることで、より複雑なPOSTリクエストにも対応できます。

ファイルをアップロードするには?

files= 引数を使えば、画像やドキュメントなどのファイルを一緒に送信することも可能です。

ファイルは辞書形式で指定し、open() でバイナリモードで読み込みます。

アップロード処理を自動化したいときに非常に便利です。

エラー処理の方法

POSTリクエストが失敗することもあります。

その場合に備えて、ステータスコードをチェックしておきましょう。

また、タイムアウトなどのネットワークエラーに対応するには、tryexcept を使います。

まとめ

今回は requests.post() の使い方を詳しく紹介しました。

  • POSTリクエストはデータを送るときに使う
  • フォーム形式なら data=, JSON形式なら json= を使い分ける
  • ヘッダーやファイル送信など、多くのオプションを組み合わせ可能
  • エラー処理やタイムアウト設定も重要

APIと連携してデータを送受信するには欠かせないメソッドなので、ぜひ実際に使いながら理解を深めてみてください!

おすすめの記事