ホームページ >バックエンド開発 >PHPチュートリアル >HTTPメッセージからPSR-7まで:それは何ですか?

HTTPメッセージからPSR-7まで:それは何ですか?

Christopher Nolan
Christopher Nolanオリジナル
2025-02-10 11:50:09973ブラウズ

PSR-7:php

のHTTPメッセージへの標準化されたアプローチ

From HTTP Messages to PSR-7: What's It All About?

PHP Framework Interoperability Group(PHP-FIG)は、PSR-7を使用したHTTPメッセージ処理を標準化しました。この仕様では、HTTPメッセージを表すための7つのインターフェイスを定義し、異なるPHPライブラリとフレームワーク間の相互運用性を促進します。 この構造化されたオブジェクト指向のアプローチは、従来のPHPのグローバル変数への依存とは対照的であり、よりテスト可能で保守可能なコードにつながります。

キーインターフェイス:PSR-7には、

RequestInterfaceResponseInterfaceServerRequestInterfaceなどのインターフェイスが含まれ、それぞれがHTTPメッセージの特定の側面を処理します。 UploadedFileInterfaceライブラリサポート:Symfony、Zend Framework、Slim、Guzzle、Aura、Httplugなど、多くの人気のあるライブラリとフレームワークがPSR-7をサポートしています。 統合は、プロジェクトのニーズに応じて、アダプターを介して、または部分的なものを直接行うことができます。

HTTPメッセージの理解:

典型的なHTTP相互作用を調べてみましょう。 ブラウザに

を入力すると、リクエストと応答の間にいくつかのステップが発生します。

サンプルの生リクエストは次のようになります:

bbc.co.uk

これは、リクエストライン(例:

)、ヘッダーライン(key:valueペア)、空白行(

)、およびオプションのボディで構成されています。
<code>GET / HTTP/1.1
Host: bbc.co.uk
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Accept: */*
Referer:</code>

を使用して、このリクエストを送信して応答を観察できます。 GET / HTTP/1.1 rn応答にはリダイレクト(301が永続的に移動しました)が含まれる場合があり、その後に実際のURLへのリクエスト(200 OK)が成功します。

構造は、リクエストと応答について似ています。メッセージライン、ヘッダーライン、空白線、ボディ。 PSR-7は、これらの共通性をインターフェイスに抽象化します

curl

PSR-7インターフェイスの重要なコンポーネント:
<code class="language-bash">curl -i -H "Host: bbc.co.uk" ... http://bbc.co.uk</code>
  • MessageInterface:リクエストと応答の両方のベースインターフェイス。
  • RequestInterface:HTTPリクエストを表すようにMessageInterface
  • を表すように拡張します
  • ResponseInterface:HTTP応答を表すようにMessageInterface>
  • ServerRequestInterface:サーバーからのリクエストの場合、サーバーや環境変数などの詳細を処理します。 RequestInterface
  • :リクエストのURIを表します UriInterface
  • :ファイルのアップロードを処理します。 UploadedFileInterface
  • :大規模なデータの効率的な処理を可能にするストリーム操作のラッパーを提供します。 StreamInterface課題と設計上の決定:
  • PSR-7の開発には、特に懸念される重要な議論が含まれていました

不変性

:PSR-7オブジェクトは、不変の値オブジェクトとして設計されています。 メッセージを変更すると、新しいインスタンスが作成され、データの整合性が確保されます。 これにより複雑さが増しますが、テスト能力が向上します
  • 命名法:メソッドシグネチャで「インターフェイス」接尾辞を使用すると、コードが冗長コードにつながる可能性があります。 エイリアシングは回避策として提案されています

  • ミドルウェア:PSR-7はメッセージ表現に焦点を当てています。 ミドルウェアの処理(リクエストと応答の間の処理)は、PSR-15で個別に対処されます。

  • 使用オプション:
  • 開発者は、いくつかの方法でPSR-7を使用できます

    直接実装
  • :インターフェイスを直接実装します

間接実装(アダプター)

:アダプターを使用して、PSR-7と既存のライブラリを橋渡しします。

部分実装
  1. などの特定のインターフェイスのみを使用します。
  2. 結論: PSR-7は、PHPでのHTTPメッセージ処理に貴重な標準を提供し、相互運用性とコードの品質を向上させます。ある程度の複雑さをもたらしますが、標準化の利点と保守性の向上は、多くのプロジェクトの欠点を上回ります。
  3. StreamInterface(よくある質問のセクションは、PSR-7に関する情報を正確に反映しており、擬似原産性のために重要な書き換えを必要としないため、ほとんど変化していません。)

以上がHTTPメッセージからPSR-7まで:それは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。