このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
psr:psr15 [2020/07/28 11:08] tanaka [PSR-15: HTTP Handlers] |
psr:psr15 [2020/09/01 11:54] tanaka [PSR-15: HTTP Server Request Handlers] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | > 編集中 | ||
- | |||
====== PSR-15: HTTP Server Request Handlers ====== | ====== PSR-15: HTTP Server Request Handlers ====== | ||
--- // | --- // | ||
- | 本章は、若干の補足を加筆してはいるものの単に[[https:// | + | 本章は、若干の補足を加筆してはいるものの単に[[https:// |
関連記事 | 関連記事 | ||
行 21: | 行 19: | ||
* [[psr: | * [[psr: | ||
* PSR-15: HTTP Server Request Handlers - HTTPサーバーリクエストハンドラー | * PSR-15: HTTP Server Request Handlers - HTTPサーバーリクエストハンドラー | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
+ | * [[psr: | ||
----- | ----- | ||
- | ====== PSR-15: HTTPハンドラー ====== | + | ====== PSR-15: HTTPサーバーリクエストハンドラー ====== |
- | > TODO: | + | |
+ | --- // 原文より翻訳 [[https:// | ||
+ | |||
+ | このドキュメントでは、[[https:// | ||
+ | |||
+ | HTTPリクエストハンドラーは、あらゆるWebアプリケーションの基本的な部分です。サーバー側コードは、リクエストメッセージを受信して処理し、応答メッセージを生成します。HTTPミドルウェアは、一般的なリクエストとレスポンスの処理をアプリケーション層から分離するための方法の1つです。 | ||
+ | |||
+ | このドキュメントで説明するインターフェースは、リクエストハンドラーとミドルウェアを抽象化したものです。 | ||
+ | |||
+ | 注:「リクエストハンドラー」および「ミドルウェア」へのすべての参照は、サーバーリクエスト処理に固有なものです。 | ||
+ | |||
+ | このドキュメントのキーワード '' | ||
+ | |||
+ | > **RFC 2119の説明** | ||
+ | > '' | ||
+ | > '' | ||
+ | > '' | ||
+ | > '' | ||
+ | > '' | ||
+ | |||
+ | === References === | ||
+ | |||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== 1. 仕様 ====== | ||
+ | |||
+ | ==== 1.1 リクエストハンドラー ==== | ||
+ | |||
+ | リクエストハンドラーは、PSR-7で定義されているように、リクエストを処理して応答を生成する個別のコンポーネントです。 | ||
+ | |||
+ | リクエスト条件によりリクエストハンドラーがレスポンスを生成できない場合、リクエストハンドラーは例外をスローする場合があります( '' | ||
+ | |||
+ | この規約を使用するリクエストハンドラーは、次のインターフェースを実装する必要があります( '' | ||
+ | |||
+ | * '' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 1.2 ミドルウェア ==== | ||
+ | |||
+ | ミドルウェアコンポーネントは個別のコンポーネントですが、PSR-7で定義されているように、着信要求の処理と結果応答の作成に他のミドルウェアコンポーネントと一緒に参加することが多いです。 | ||
+ | |||
+ | ミドルウェアコンポーネントは、十分な条件が満たされている場合、リクエストハンドラーに委任することなく応答を作成して返すことができます( '' | ||
+ | |||
+ | この規約を使用するミドルウェアは、次のインターフェースを実装する必要があります( '' | ||
+ | |||
+ | * '' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 1.3 レスポンスの生成 ==== | ||
+ | |||
+ | 応答を生成するミドルウェアまたはリクエストハンドラーは、PSR-7の '' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 1.4 例外のハンドリング ==== | ||
+ | |||
+ | ミドルウェアを使用するアプリケーションは、例外をキャッチしてそれらをレスポンスに変換するコンポーネントを含むことが推奨されます( '' | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ===== 2. インターフェース ===== | ||
+ | |||
+ | ==== 2.1 Psr\Http\Server\RequestHandlerInterface ==== | ||
+ | |||
+ | リクエストハンドラーは次のインターフェースを実装する必要があります( '' | ||
+ | |||
+ | <code php RequestHandlerInterface.php> | ||
+ | namespace Psr\Http\Server; | ||
+ | |||
+ | use Psr\Http\Message\ResponseInterface; | ||
+ | use Psr\Http\Message\ServerRequestInterface; | ||
+ | |||
+ | /** | ||
+ | * サーバーリクエストを処理し、レスポンスを生成します。 | ||
+ | * | ||
+ | * HTTPリクエストハンドラーは、HTTPレスポンスを生成するためにHTTPリクエストを処理します。 | ||
+ | */ | ||
+ | interface RequestHandlerInterface | ||
+ | { | ||
+ | /** | ||
+ | * リクエストを処理し、レスポンスを生成します。 | ||
+ | * | ||
+ | * レスポンスを生成するために、他の協調するコードを呼び出すことができます。 | ||
+ | */ | ||
+ | public function handle(ServerRequestInterface $request): ResponseInterface; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | \\ | ||
+ | |||
+ | ==== 2.2 Psr\Http\Server\MiddlewareInterface ==== | ||
+ | |||
+ | 互換性のあるミドルウェアコンポーネントは次のインターフェースを実装する必要があります( '' | ||
+ | |||
+ | <code php MiddlewareInterface.php> | ||
+ | namespace Psr\Http\Server; | ||
+ | |||
+ | use Psr\Http\Message\ResponseInterface; | ||
+ | use Psr\Http\Message\ServerRequestInterface; | ||
+ | |||
+ | /** | ||
+ | * サーバーのリクエストとレスポンスを処理する参加者。 | ||
+ | * | ||
+ | * HTTPミドルウェアコンポーネントは、HTTPメッセージの処理に参加します: | ||
+ | * つまり、リクエストに基づいて動作するか、レスポンスを生成するか、 | ||
+ | * または リクエストを後続のミドルウェアに転送し場合によってはそのレスポンスに基づいて動作します。 | ||
+ | */ | ||
+ | interface MiddlewareInterface | ||
+ | { | ||
+ | /** | ||
+ | * 着信サーバー要求を処理します。 | ||
+ | * | ||
+ | * レスポンスを生成するために、着信サーバーリクエストを処理します。 | ||
+ | * レスポンス自体を生成できない場合は、それをするのに提供されたリクエストハンドラーに委任します。 | ||
+ | */ | ||
+ | public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface; | ||
+ | } | ||
+ | </ | ||
\\ | \\ | ||