6

サーバー側のリクエストの意味を誰かが説明してくれるかどうか疑問に思っていました。よくわからない専門用語かもしれません。サーバーからクライアントへのリクエストのように聞こえますが、それだけではないと思います。

PHP PSR7に関するものです。RequestInterfaceと の両方がある理由を理解しようとしていServerRequestInterfaceます。私はそれについてどこにも細かいことを縫い合わせることができず、これら2つが1つのインターフェースにマージされない理由がわかりません.

4

2 に答える 2

5

「サーバー側のリクエスト」の意味が明確でないことに同意します。結局、HTTP 要求はクライアント (ブラウザー、ボット、REST API ユーザーなど) によって送信され、サーバーによって受信されることが知られています。ただし、「サーバー」という言葉は、異なるコンテキストでは異なるものを指す場合があります。

HTTP 要求は、Apache、Nginx、Microsoft IIS などのHTTP サーバーによって受信されます。サーバーは、サーバー アプリケーション プログラミング インターフェイス (SAPI)を提供します。これにより、特に Web サーバーによって解析された情報を後処理できます。

PHP エンジン (Zend) は、その SAPI ( Server API ) モジュールによってさまざまな環境と対話します。このモジュールは、CLI (コマンド ライン インターフェイス)、CGI (共通ゲートウェイ インターフェイス)、Apache、FPM (FastCGI Process Manager) などの多数のサブモジュールで構成されています。それぞれが PHP スーパーグローバルの内容について独自の考えを持っています ( example )。

生の HTTP 要求は、Web サーバーによって解析されます。PHP は、さらに処理するために SAPI を介して Web サーバーから解析済みデータを要求し、それを特にスーパーグローバルの形式で私たちに渡します。

RequestInterfaceしたがって、公式ドキュメントで間接的に言及されているように、ヘッダーやメッセージ本文の一部を Cookie に分類したり、データをアップロードしたり、GET 変数や POST 変数などに分類したりしない最初の単純なHTTP 要求を表します。

RequestInterfaceとはResponseInterface、RFC 7230 で説明されている要求および応答メッセージと基本的に 1:1 の相関関係にあります。これらは、モデル化する特定の HTTP メッセージ タイプに対応する値オブジェクトを実装するためのインターフェイスを提供します。

たとえば、URI、スキーム、クエリ、ポートなどの一般的な要求パラメーターのインターフェイスを提供するだけです。

HTTPServerRequestInterfaceメッセージ (要求) の単純な表現の解析済みバージョンを表します。メッセージの論理的に分類された部分、サーバー側で生成された部分(アップロードされたファイル、Cookie、サーバー パラメーターなど) へのアクセスを導入します。

client からの HTTP リクエストRequestInterfaceと考えることをお勧めします。そして、クライアントのリクエスト=)、つまり、サーバー (SAPI) によって変更された元のリクエストのバージョンではありません。ServerRequestInterface

于 2016-10-13T09:06:07.813 に答える
1

以下よりも良い答えを与えることはできません:

RequestInterface は、HTTP 要求メッセージの一般的な表現を提供します。ただし、サーバー側の環境の性質上、サーバー側の要求には追加の処理が必要です。サーバー側の処理では、Common Gateway Interface (CGI) を考慮する必要があります。具体的には、PHP のサーバー API (SAPI) による CGI の抽象化と拡張を考慮する必要があります。PHP は、次のようなスーパーグローバルを介して入力マーシャリングを簡素化しました。

..

ServerRequestInterface は RequestInterface を拡張して、これらのさまざまなスーパーグローバルに関する抽象化を提供します。このプラクティスは、コンシューマーによるスーパーグローバルへの結合を減らすのに役立ち、リクエスト コンシューマーをテストする機能を奨励および促進します。

http://www.php-fig.org/psr/psr-7/

于 2016-10-13T02:16:47.133 に答える