検索
ホームページバックエンド開発Python チュートリアルPython リクエスト POST メソッドのガイド

Guide to Python requests POST method

Python のリクエスト ライブラリは、API 通信、特に POST リクエストの作成を簡素化する強力な http クライアント ライブラリ ツールです。リモート API と対話するアプリケーションを構築する場合でも、Web スクレイピングを構築する場合でも、リクエストを伴う POST メソッドを習得することは、効率的な Web 開発のための基本的なスキルです。

このガイドでは、サーバーにデータを送信するための重要な方法である POST リクエストを行うための Python リクエストの使用方法を包括的に説明します。例、一般的な課題、ベスト プラクティスについて説明します。

ライブラリを初めて使用する場合は、このガイドに従って pip install リクエストを使用してライブラリをインストールすることから始めることができます。

HTTP POST リクエストとは何ですか?

HTTP は、Web クライアント (ブラウザーやアプリケーションなど) とサーバー間の通信のバックボーンです。このプロトコルはリクエストを使用してデータを交換し、複数のメソッド タイプが存在する可能性があります:

  • GET : データを変更せずにサーバーから取得します。
  • POST : データをサーバーに送信します。次の用途に最適です。
    • 新しいレコード (ユーザー アカウントなど) を作成します。
    • フォームまたはユーザー入力を送信します。
    • ファイルまたは機密データの送信。
  • PUT : ユーザー プロファイルの変更など、既存のリソースを更新します。
  • DELETE : 指定されたリソースをサーバーから削除します。
  • PATCH : 既存のリソースを部分的に更新します。
  • HEAD : 本文を含まず、応答のヘッダー (メタ情報) のみを要求します。
  • OPTIONS : サーバーによってサポートされている HTTP メソッドを確認します。

Python でのリクエスト POST の使用は、データをサーバーに送信する対話には不可欠であり、このメソッドには多くの使用例が考えられます。次にそれを見てみましょう。

データ送信に POST を使用する理由

Web 開発では、他の HTTP メソッドではなく POST をいつ使用するかを理解することが重要です。限られた URL パラメータの一部としてデータを送信する GET とは異なり、POST はリクエスト本文を通じてデータを送信します。これにより、より大きなペイロードに対応し、セキュリティのためにデータを隠しておくことができます。これにより、POST メソッドは次の用途に最適になります。

  • 新しいレコードの作成 : 新しいユーザーの追加、コメントの投稿、またはドキュメントのアップロード。
  • フォームデータの送信 : ユーザーが問い合わせフォーム、検索フォーム、またはアカウント設定を通じて情報を送信するとき。
  • 機密データの送信 : GET とは異なり、POST リクエストでは URL にパラメーターが表示されないため、機密情報に対する追加のセキュリティ層が提供されます。

POST リクエストとは何かを明確に理解したら、リクエスト ライブラリを使用して Python で POST リクエストを送信する方法を見てみましょう。JSON、フォーム データ、ファイル アップロードなどの重要な形式について説明します。

Python リクエストを使用して POST リクエストを送信する

requests.post() 関数は、Python で POST リクエストを送信するための主要なツールです。 URL、ヘッダー、データ自体を指定することで、カスタマイズ可能で簡単なデータ送信が可能になります。最も一般的なデータ型には、JSON、フォーム データ、生の本文データが含まれており、これらはすべて Python リクエストの POST メソッドで簡単に処理できます。例:

POST リクエストを送信するための基本的な Python リクエストの例:

import requests

response = requests.post('https://httpbin.dev/post', data={'key': 'value'})
# or start a persisten session:
session = requests.Session()
response = session.post('https://httpbin.dev/post', data={'key': 'value'})

# Check response content
print(response.status_code)
print(response.text)

requests.Session() を使用すると、複数のリクエストにわたって特定のパラメータ (Cookie やヘッダーなど) を保持できます。これは、サーバーが現在のクライアントの状態を追跡し、別のデータを返したり、特定のヘッダーや Cookie が欠落している POST リクエストをブロックしたりする可能性があるため、POST リクエストを操作する場合に非常に重要です。

さまざまなコンテンツタイプ

HTTP Content-Type ヘッダーは、送信されるデータの形式を指定するため、POST リクエストでは重要です。これにより、サーバーがリクエストを正しく解釈できるようになります。

一部のサーバーは複数の POST コンテンツ タイプをサポートしますが、他のサーバーは特定の形式を必要とします。一般的な Content-Type ヘッダーとその用途を次に示します。

  • application/json は、API 通信で一般的に使用される JSON 形式を表します。
  • application/x-www-form-urlencoded は HTML フォームの送信で使用され、データを URL エンコードされたキーと値のペアとしてエンコードします。
  • ファイルのアップロード用に設計された multipart/form-data は、単一のリクエストでバイナリ ファイルやテキストなどの混合コンテンツをサポートします。

Python リクエストで Content-Type ヘッダーを設定するには、headers パラメーターを使用します。

import requests
response = requests.post(
    'https://httpbin.dev/post', 
    headers={
        "Content-Type": "application/json",
    },
    data='{ "key": "value" }'
)

これを念頭に置いて、次に POST リクエストで使用される最も一般的なデータ形式を見てみましょう。

JSONデータを投稿する方法

JSON (JavaScript Object Notation) は、構造化と解析が容易なため、API 通信によく使用される形式です。これは JavaScript でネイティブに利用でき、Python では json モジュールを使用して Python 辞書に簡単にキャストできます。

リクエスト ライブラリを使用して、JSON データを含む Python リクエスト POST を送信するのは簡単です。 request.post() で json パラメータを使用します。これにより、エンコードが自動的に処理され、Content-Type ヘッダーが設定されます:

import requests

response = requests.post('https://httpbin.dev/post', data={'key': 'value'})
# or start a persisten session:
session = requests.Session()
response = session.post('https://httpbin.dev/post', data={'key': 'value'})

# Check response content
print(response.status_code)
print(response.text)

JSON は、次のようなシナリオで頻繁に使用される最も一般的な POST データ型です。

  • ユーザー認証 : ログインまたはサインアップする際、資格情報の送信と認証トークンの受信に JSON が使用されます。
  • データの取得と送信 : 天気、株価、ユーザー プロフィールなどのデータを取得または更新するための API は、通常、JSON で応答し、多くの場合、更新の送信に JSON を必要とします。
  • 構成設定 : 多くのアプリケーションは JSON を使用して構成の詳細を送受信し、ユーザーの設定やシステム要件に基づいた柔軟なセットアップを可能にします。
  • Web アプリでのフォーム送信 : JSON は、アンケートや電子商取引トランザクションなど、フォームやユーザー入力が送信されるアプリケーションでも一般的です。

フォームデータをPOSTする方法

フォーム データは、ユーザーが次のような Web ページ上の入力フィールドを操作するときに使用されます。

  • ログインを実行しています
  • 検索を送信する
  • コメントや投稿などのユーザー生成コンテンツの送信

フォーム データは、Content-Type ヘッダー application/x-www-form-urlencoded を使用してデータを送信し、データを Key-Value 形式で URL エンコードします。この形式をよりよく理解するために、Python リクエストでフォーム データを POST する方法の例を見てみましょう:

import requests
response = requests.post(
    'https://httpbin.dev/post', 
    headers={
        "Content-Type": "application/json",
    },
    data='{ "key": "value" }'
)

上記の例では、データ パラメーターとして Python 辞書を使用しているときに、Content-Type ヘッダーが自動的に設定されます。それ以外の場合、文字列を渡す場合は、Content-Type ヘッダーを手動で設定する必要があります。

ファイルの送信

Python のリクエスト ライブラリを使用してファイルを送信するには、files パラメータを使用できます。このパラメーターはバイト データを受け取り、Content-Type ヘッダーを multipart/form-data に自動的に設定します。これは、画像、ドキュメント、メディア コンテンツをアップロードする場合に便利です。 Python リクエスト POST を使用してファイルをアップロードする方法の例をいくつか見てみましょう:

import requests

data = {'username': 'ziad', 'password': '1234'}
response = requests.post('https://httpbin.dev/api', json=data)

上記では、サーバーにデータをストリーミングするリクエストにファイル オブジェクトを提供することも、バイト データを直接提供することもできることがわかりました。

Python での POST 応答の処理

POST リクエストを作成した後、レスポンスにエラーやメタ ノートがないか確認することをお勧めします。そのため、リクエストの Response オブジェクトは、成功の評価や問題の診断に役立つ status_code、headers、json() などの属性を提供します。

まず、response.status_code を調べて、POST リクエストが成功し、レスポンス 200 OK が返されたかどうかを確認します。それ以外の場合は、以下の便利な表を参照してください。

一般的な POST 応答の問題とその解決方法

Status Code Issue Description Solution
400 Bad Request Incorrect data or syntax error The server couldn't process the request due to data format issues. Check the data format and headers (e.g., Content-Type) for correctness.
401 Unauthorized Missing or invalid authentication The request lacks valid authentication credentials. Include valid API keys or tokens in headers.
403 Forbidden Access denied The server refuses to authorize the request. Verify permissions and check the API documentation for access requirements.
404 Not Found Incorrect URL The server cannot find the requested endpoint. Double-check the endpoint URL for typos and ensure it’s valid.
405 Method Not Allowed Unsupported HTTP method The endpoint does not support the HTTP method used. Confirm the correct HTTP method is used by consulting the API documentation.
500 Internal Server Error Server-side error A generic error indicating an internal server issue. Retry the request; contact API support if the issue persists.
503 Service Unavailable Temporary overload/maintenance The server is temporarily unavailable due to high traffic or maintenance. Wait and retry later; consider implementing retry logic for critical applications.

response.status_code を監視し、エラー処理ロジックを組み込むことで、POST リクエストを行う際の堅牢で信頼性の高い対話を保証できます。

応答ステータス コードを処理する方法の例を次に示します。

import requests

response = requests.post('https://httpbin.dev/post', data={'key': 'value'})
# or start a persisten session:
session = requests.Session()
response = session.post('https://httpbin.dev/post', data={'key': 'value'})

# Check response content
print(response.status_code)
print(response.text)

これらの応答を解釈する方法を知ることは、エラーを効果的に処理し、スムーズなユーザー エクスペリエンスと API インタラクションのトラブルシューティングを保証するのに役立ちます。

圧縮データの投稿

データ転送帯域幅を最適化するために、Gzip または Brotli 圧縮データを POST できます。 gzip 圧縮の例を次に示します:

import requests
response = requests.post(
    'https://httpbin.dev/post', 
    headers={
        "Content-Type": "application/json",
    },
    data='{ "key": "value" }'
)

Brotli 圧縮には、brotli パッケージを使用できます。

import requests

data = {'username': 'ziad', 'password': '1234'}
response = requests.post('https://httpbin.dev/api', json=data)

圧縮を使用すると、ペイロード サイズが大幅に減少し、帯域幅が最適化され、リクエスト速度が向上します。これは、適切に圧縮できる JSON などの形式に特に当てはまります。

同時 POST リクエストによるパフォーマンスの向上

POST リクエスト、特に大規模なデータセットや大量のデータを伴うリクエストは、データ送信とサーバー側の処理に時間がかかるため、遅くなる可能性があります。同時実行により、複数のリクエストを同時に実行できるようになり、一括データのアップロードや API 対話などのタスクが高速化され、これらの遅延が軽減されます。

残念ながら、Python のリクエスト ライブラリは asyncio による非同期操作をサポートしていないため、多数の同時 POST リクエストを効率的に処理する能力が制限されています。

ここで httpx が登場します。httpx は、Python の asyncio イベント ループとシームレスに統合する AsyncClient を提供します。これは、ブロックすることなく多数のリクエストを同時に送信できることを意味し、真の非同期サポートを必要とする高性能アプリケーションにとって httpx が強力な選択肢となります。

または、スレッドを使用して、Python リクエストでの並列リクエストを有効にすることもできます。以下は、リクエストで組み込みのスレッド パッケージを使用する例です:

form_data = {'search': 'product 1 & 2', 'count': 10}
response = requests.post(
    'https://httpbin.dev/post', 
    data=form_data,
)
# this will automatically add the Content-Type header
# and convert data from dictionary to URL encoded format
print(response.request.body)
'search=product+1+%26+2&count=10'
print(response.request.headers['Content-Type'])
'application/x-www-form-urlencoded'

# alternatively if we POST data as string
# we need to manually identify Content-Type
response = requests.post(
    'https://httpbin.dev/post', 
    data='search=product+1+%26+2&count=10'
    headers={
        "Content-Type": "application/x-www-form-urlencoded"
    }
)
print(response.request.body)
'search=product+1+%26+2&count=10'
print(response.request.headers['Content-Type'])
'application/x-www-form-urlencoded'

スレッドを使用すると、複数の POST リクエストを並行して起動でき、各スレッドが 1 つのリクエストを処理できるようになります。

同時実行と並列処理について詳しくは、専用の記事をご覧ください:

同時実行性と並列性
(https://scrapfly.io/blog/concurrency-vs-Parallelism/)

スクラップフライでパワーアップ

HTTP リクエストは難しく、ヘッドレス ブラウザの要件やクライアントのブロックによりすぐに複雑になる場合があります。そのために、Scrapfly がお手伝いします!

Guide to Python requests POST method

ScrapFly は、大規模なデータ収集のための Web スクレイピング、スクリーンショット、抽出 API を提供します。

  • ボット対策保護バイパス - ブロックせずに Web ページをスクレイピング!
  • ローテーション レジデンシャル プロキシ - IP アドレスと地理的ブロックを防ぎます。
  • JavaScript レンダリング - クラウド ブラウザを通じて動的 Web ページをスクレイピングします。
  • 完全なブラウザ自動化 - ブラウザを制御してオブジェクトをスクロール、入力、クリックします。
  • 形式変換 - HTML、JSON、テキスト、またはマークダウンとしてスクレイピングします。
  • Python と Typescript SDK、および Scrapy とノーコード ツールの統合。

よくある質問

このガイドの締めくくりとして、Python リクエストの POST に関するよくある質問への回答を示します。

Python リクエストの使用にカスタム ヘッダーを含めるにはどうすればよいですか?

headers パラメーターを使用して、ヘッダーを辞書として渡します。リクエストでは User-Agent、Content-Length、Content-Type などの一部のヘッダーが自動的に生成されるため、これらをオーバーライドする場合は注意してください。

Python リクエストの data パラメーターと json パラメーターの違いは何ですか?

データは、フォームエンコードされたデータ (デフォルト) または生データ (Content-Type ヘッダーがオーバーライドされた場合) 用です。一方、json は JSON 形式のデータに特化しており、Content-Type を application/json に自動的に設定します。

Python リクエスト ライブラリは非同期 POST リクエストをサポートしていますか?

残念ながら、リクエスト ライブラリは非同期リクエストをサポートしていません。ただし、httpx ライブラリは非同期機能を提供する代替手段であり、同時実行性を必要とするアプリケーションに適しています。

まとめ

この記事では、Python のリクエストの POST メソッドを詳しく調べて、次のことを学びました。

  • POST リクエストは、JSON、フォーム データ、ファイル アップロードなどのさまざまなタイプのサーバーにデータを送信するためにどのように使用されます。
  • POST リクエストの応答と一般的なステータス コードを処理する方法と、それらを修正する方法。
  • httpx または並列リクエストのスレッドを使用して、同時 POST リクエストのパフォーマンスを向上させる方法。
  • gzip モジュールと brotli モジュールを使用してデータを圧縮して帯域幅と速度を最適化する方法。

Python リクエストと POST リクエストについては学ぶべきことがたくさんありますが、このガイドを読めば、API やサーバーと効果的に対話する堅牢なアプリケーションや Web スクレイパーの構築を始めるための準備が整います。

以上がPython リクエスト POST メソッドのガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Pythonを使用してテキストファイルのZIPF配布を見つける方法Pythonを使用してテキストファイルのZIPF配布を見つける方法Mar 05, 2025 am 09:58 AM

このチュートリアルでは、Pythonを使用してZIPFの法則の統計的概念を処理する方法を示し、法律の処理時にPythonの読み取りおよび並べ替えの効率性を示します。 ZIPF分布という用語が何を意味するのか疑問に思うかもしれません。この用語を理解するには、まずZIPFの法律を定義する必要があります。心配しないでください、私は指示を簡素化しようとします。 ZIPFの法則 ZIPFの法則は単に意味します。大きな自然言語のコーパスでは、最も頻繁に発生する単語は、2番目の頻繁な単語のほぼ2倍の頻度で表示されます。 例を見てみましょう。アメリカ英語の茶色のコーパスを見ると、最も頻繁な言葉は「thであることに気付くでしょう。

HTMLを解析するために美しいスープを使用するにはどうすればよいですか?HTMLを解析するために美しいスープを使用するにはどうすればよいですか?Mar 10, 2025 pm 06:54 PM

この記事では、Pythonライブラリである美しいスープを使用してHTMLを解析する方法について説明します。 find()、find_all()、select()、およびget_text()などの一般的な方法は、データ抽出、多様なHTML構造とエラーの処理、および代替案(SEL

Pythonでの画像フィルタリングPythonでの画像フィルタリングMar 03, 2025 am 09:44 AM

ノイズの多い画像を扱うことは、特に携帯電話や低解像度のカメラの写真でよくある問題です。 このチュートリアルでは、OpenCVを使用してPythonの画像フィルタリング手法を調査して、この問題に取り組みます。 画像フィルタリング:強力なツール 画像フィルター

Pythonを使用してPDFドキュメントの操作方法Pythonを使用してPDFドキュメントの操作方法Mar 02, 2025 am 09:54 AM

PDFファイルは、クロスプラットフォームの互換性に人気があり、オペレーティングシステム、読み取りデバイス、ソフトウェア間でコンテンツとレイアウトが一貫しています。ただし、Python Plansing Plain Text Filesとは異なり、PDFファイルは、より複雑な構造を持つバイナリファイルであり、フォント、色、画像などの要素を含んでいます。 幸いなことに、Pythonの外部モジュールでPDFファイルを処理することは難しくありません。この記事では、PYPDF2モジュールを使用して、PDFファイルを開き、ページを印刷し、テキストを抽出する方法を示します。 PDFファイルの作成と編集については、私からの別のチュートリアルを参照してください。 準備 コアは、外部モジュールPYPDF2を使用することにあります。まず、PIPを使用してインストールします。 ピップはpです

DjangoアプリケーションでRedisを使用してキャッシュする方法DjangoアプリケーションでRedisを使用してキャッシュする方法Mar 02, 2025 am 10:10 AM

このチュートリアルでは、Redisキャッシングを活用して、特にDjangoフレームワーク内でPythonアプリケーションのパフォーマンスを向上させる方法を示しています。 Redisのインストール、Django構成、およびパフォーマンスの比較をカバーして、Beneを強調します

TensorflowまたはPytorchで深い学習を実行する方法は?TensorflowまたはPytorchで深い学習を実行する方法は?Mar 10, 2025 pm 06:52 PM

この記事では、深い学習のためにTensorflowとPytorchを比較しています。 関連する手順、データの準備、モデルの構築、トレーニング、評価、展開について詳しく説明しています。 特に計算グラップに関して、フレームワーク間の重要な違い

Pythonの並列および同時プログラミングの紹介Pythonの並列および同時プログラミングの紹介Mar 03, 2025 am 10:32 AM

データサイエンスと処理のお気に入りであるPythonは、高性能コンピューティングのための豊富なエコシステムを提供します。ただし、Pythonの並列プログラミングは、独自の課題を提示します。このチュートリアルでは、これらの課題を調査し、グローバルな承認に焦点を当てています

Pythonで独自のデータ構造を実装する方法Pythonで独自のデータ構造を実装する方法Mar 03, 2025 am 09:28 AM

このチュートリアルでは、Python 3にカスタムパイプラインデータ構造を作成し、機能を強化するためにクラスとオペレーターのオーバーロードを活用していることを示しています。 パイプラインの柔軟性は、一連の機能をデータセットに適用する能力にあります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。