このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
psr:psr18 [2020/08/28 10:58] y2sunlight [定義] |
psr:psr18 [2020/09/01 11:55] (現在) tanaka [PSR-18: HTTP Client] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | > 編集中 | ||
- | |||
====== PSR-18: HTTP Client ====== | ====== PSR-18: HTTP Client ====== | ||
行 24: | 行 22: | ||
* [[psr: | * [[psr: | ||
* PSR-18: HTTP Client - HTTPクライアント | * PSR-18: HTTP Client - HTTPクライアント | ||
- | * [[psr: | + | * [[psr: |
----- | ----- | ||
行 55: | 行 53: | ||
===== 定義 ====== | ===== 定義 ====== | ||
- | * クライアント --- クライアントは、PSR-7互換のHTTPリクエストメッセージを送信し、PSR-7互換のHTTPレスポンスメッセージを呼び出し側ライブラリに返す目的でこの仕様を実装するライブラリです。\\ \\ | + | * '' |
* 呼び出しライブラリ --- 呼び出しライブラリは、このPSRで定義されているHTTP'' | * 呼び出しライブラリ --- 呼び出しライブラリは、このPSRで定義されているHTTP'' | ||
行 61: | 行 59: | ||
===== クライアント ====== | ===== クライアント ====== | ||
- | |||
- | A Client is an object implementing ClientInterface. | ||
クライアントは、'' | クライアントは、'' | ||
- | A Client | + | **クライアントの選択**( '' |
- | クライアントのMAY-DO: | + | * クライアントは提供されたものから変更されたHTTPリクエストを送信することを選択できます( '' |
+ | * クライアントは呼び出したライブラリに返す前に、受信したHTTPレスポンスを変更することを選択できます( '' | ||
- | * Choose to send an altered HTTP request from the one it was provided. For example, it could compress an outgoing message body. | + | クライアントがHTTPリクエストまたはHTTPレスポンスのいずれかを変更することを選択した場合、オブジェクトが内部的に一貫していることを保証する必要があります( |
- | * Choose to alter a received HTTP response before returning it to the calling library. For example, it could decompress an incoming message body. | + | |
- | + | ||
- | * クライアントは、提供されたものから変更されたHTTPリクエストを送信することを選択できます( '' | + | |
- | * クライアントは、呼び出したライブラリに返す前に、受信したHTTPレスポンスを変更することを選択できます( '' | + | |
- | + | ||
- | If a Client chooses to alter either the HTTP request or HTTP response, it MUST ensure that the object remains internally consistent. For example, if a Client chooses to decompress the message body then it MUST also remove the Content-Encoding header and adjust the Content-Length header. | + | |
- | + | ||
- | クライアントがHTTPリクエストまたはHTTPレスポンスのいずれかを変更することを選択した場合、オブジェクトが内部的に一貫していることを保証する必要があります( MUST )。例えば、クライアントがメッセージ本文を解凍することを選択した場合は、'' | + | |
- | + | ||
- | Note that as a result, since PSR-7 objects are immutable, the Calling Library MUST NOT assume that the object passed to ClientInterface:: | + | |
その結果、[[https:// | その結果、[[https:// | ||
- | A Client MUST: | + | **クライアントの義務**( '' |
- | + | ||
- | クライアントのMUST-DO: | + | |
- | + | ||
- | * Reassemble a multi-step HTTP 1xx response itself so that what is returned to the Calling Library is a valid HTTP response of status code 200 or higher. | + | |
- | * クライアントは、呼び出し元ライブラリに返されるものがステータスコード200以上の有効なHTTPレスポンスになるように、マルチステップHTTP 1xxレスポンス自体を再構成する必要があります( '' | + | * クライアントは呼び出し元ライブラリに返されるものがステータスコード200以上の有効なHTTPレスポンスになるように、マルチステップHTTP 1xxレスポンス自体を再構成する必要があります( '' |
\\ | \\ | ||
===== エラー処理 ====== | ===== エラー処理 ====== | ||
- | |||
- | A Client MUST NOT treat a well-formed HTTP request or HTTP response as an error condition. For example, response status codes in the 400 and 500 range MUST NOT cause an exception and MUST be returned to the Calling Library as normal. | ||
クライアントは、整形式のHTTPリクエストまたはHTTPレスポンスをエラー状態として扱わないでください( '' | クライアントは、整形式のHTTPリクエストまたはHTTPレスポンスをエラー状態として扱わないでください( '' | ||
- | A Client MUST throw an instance of Psr\Http\Client\ClientExceptionInterface if and only if it is unable to send the HTTP request at all or if the HTTP response could not be parsed into a PSR-7 response object. | + | クライアントは、HTTPリクエストをまったく送信できない場合、または HTTPレスポンスを PSR-7 レスポンスオブジェクトにパースできなかった場合にのみ、'' |
- | + | ||
- | クライアントは、HTTPリクエストをまったく送信できない場合、またはHTTPレスポンスをPSR-7レスポンスオブジェクトにパースできなかった場合にのみ、'' | + | |
- | + | ||
- | If a request cannot be sent because the request message is not a well-formed HTTP request or is missing some critical piece of information (such as a Host or Method), the Client MUST throw an instance of Psr\Http\Client\RequestExceptionInterface. | + | |
リクエストメッセージが整形式のHTTPリクエストではないか、重要な情報(ホストやメソッドなど)がないためにリクエストを送信できない場合、クライアントは '' | リクエストメッセージが整形式のHTTPリクエストではないか、重要な情報(ホストやメソッドなど)がないためにリクエストを送信できない場合、クライアントは '' | ||
- | |||
- | If the request cannot be sent due to a network failure of any kind, including a timeout, the Client MUST throw an instance of Psr\Http\Client\NetworkExceptionInterface. | ||
タイムアウトを含むあらゆる種類のネットワーク障害が原因でリクエストを送信できない場合、クライアントは '' | タイムアウトを含むあらゆる種類のネットワーク障害が原因でリクエストを送信できない場合、クライアントは '' | ||
- | |||
- | Clients MAY throw more specific exceptions than those defined here (a TimeOutException or HostNotFoundException for example), provided they implement the appropriate interface defined above. | ||
クライアントは、上記で定義された適切なインターフェースを実装している場合、ここで定義されたものよりも具体的な例外(例えば、 '' | クライアントは、上記で定義された適切なインターフェースを実装している場合、ここで定義されたものよりも具体的な例外(例えば、 '' | ||
行 131: | 行 104: | ||
{ | { | ||
/** | /** | ||
- | * Sends a PSR-7 request and returns a PSR-7 response. | ||
* PSR-7リクエストを送信し、PSR-7レスポンスを返します。 | * PSR-7リクエストを送信し、PSR-7レスポンスを返します。 | ||
* | * | ||
* @param RequestInterface $request | * @param RequestInterface $request | ||
- | * | ||
* @return ResponseInterface | * @return ResponseInterface | ||
* | * | ||
- | * @throws \Psr\Http\Client\ClientExceptionInterface | + | * @throws \Psr\Http\Client\ClientExceptionInterface リクエストの処理中にエラーが発生した場合。 |
- | | + | |
*/ | */ | ||
public function sendRequest(RequestInterface $request): ResponseInterface; | public function sendRequest(RequestInterface $request): ResponseInterface; | ||
行 153: | 行 124: | ||
/** | /** | ||
- | * Every HTTP client related exception MUST implement this interface. | ||
* すべてのHTTPクライアント関連の例外は、このインターフェイスを実装する必要があります。 | * すべてのHTTPクライアント関連の例外は、このインターフェイスを実装する必要があります。 | ||
*/ | */ | ||
行 171: | 行 141: | ||
/** | /** | ||
- | * Exception for when a request failed. | ||
* リクエストが失敗した場合の例外。 | * リクエストが失敗した場合の例外。 | ||
* | * | ||
- | * Examples: | ||
- | | ||
- | | ||
* 例: | * 例: | ||
| | ||
行 184: | 行 150: | ||
{ | { | ||
/** | /** | ||
- | * Returns the request. | ||
* リクエストを返します。 | * リクエストを返します。 | ||
* | * | ||
- | * The request object MAY be a different object from the one passed to ClientInterface:: | ||
* リクエストオブジェクトは、ClientInterface:: | * リクエストオブジェクトは、ClientInterface:: | ||
* 異なるオブジェクトである可能性があります | * 異なるオブジェクトである可能性があります | ||
行 207: | 行 171: | ||
/** | /** | ||
- | * Thrown when the request cannot be completed because of network issues. | ||
* ネットワークの問題のためにリクエストを完了できない場合にスローされます。 | * ネットワークの問題のためにリクエストを完了できない場合にスローされます。 | ||
* | * | ||
- | * There is no response object as this exception is thrown when no response has been received. | ||
* この例外は、応答が受信されなかった場合にスローされるため、応答オブジェクトはありません。 | * この例外は、応答が受信されなかった場合にスローされるため、応答オブジェクトはありません。 | ||
* | * | ||
- | * Example: the target host name can not be resolved or the connection failed. | ||
* 例:ターゲットホスト名を解決できないか、接続が失敗しました。 | * 例:ターゲットホスト名を解決できないか、接続が失敗しました。 | ||
*/ | */ | ||
行 220: | 行 181: | ||
/** | /** | ||
* Returns the request. | * Returns the request. | ||
- | * リクエストを返します。 | ||
* | * | ||
- | * The request object MAY be a different object from the one passed to ClientInterface:: | ||
* リクエストオブジェクトは、ClientInterface:: | * リクエストオブジェクトは、ClientInterface:: | ||
* 異なるオブジェクトである可能性があります | * 異なるオブジェクトである可能性があります | ||
行 233: | 行 192: | ||
\\ | \\ | ||
- | |||