ホームページ >バックエンド開発 >Python チュートリアル >Python リクエストを使用して生の HTTP リクエストを出力するには?
Python リクエストを使用した生の HTTP リクエストの出力
Python リクエスト ライブラリは HTTP リクエストを簡素化しますが、生の HTTP リクエストを理解することはデバッグに役立ちます。そして分析。この記事では、リクエスト行、ヘッダー、コンテンツを含む完全な HTTP リクエストにアクセスして印刷する方法について説明します。
以前は、生のリクエストを抽出するには、ヘッダーのみを提供していたリクエスト属性にアクセスする必要がありました。ただし、バージョン 1.2.3 のリクエストでは、サーバーに送信される正確なバイトをカプセル化する PreparedRequest オブジェクトが導入されました。
PreparedRequest を利用するには、リクエスト オブジェクトを作成し、prepare() メソッドを使用します。出力はわかりやすくするために整形されます。
<code class="python">import requests # Create a request req = requests.Request('POST', 'http://stackoverflow.com', headers={'X-Custom': 'Test'}, data='a=1&b=2') # Prepare the request (encodes it to bytes) prepared = req.prepare() # Define a function to prettify the POST request def pretty_print_POST(req): """Prints the request in a human-readable format.""" print('{}\n{}\r\n{}\r\n\r\n{}'.format( '-----------START-----------', req.method + ' ' + req.url, '\r\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()), req.body, )) # Prettify the prepared request pretty_print_POST(prepared) # Send the actual request using a Session object s = requests.Session() s.send(prepared)</code>
このコードは、完全な HTTP リクエストを次のように出力します。
-----------START----------- POST http://stackoverflow.com/ Content-Length: 7 X-Custom: Test a=1&b=2
このアプローチにより、サーバーに送信されたリクエストの検査が可能になり、デバッグし、リクエストとレスポンスのライフサイクルを理解します。
以上がPython リクエストを使用して生の HTTP リクエストを出力するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。