java.lang.Object
com.sun.net.httpserver.HttpHandlers
public final class HttpHandlers extends Object
静的レスポンス・ハンドラなどの様々な有用なハンドラ、または1つのハンドラを別のハンドラに補完する条件ハンドラを実装する
HttpHandler
の実装。
ファクトリ・メソッドof(int, Headers, String)
は、事前に設定された静的レスポンス状態を持つハンドラを作成する手段を提供します。 たとえば、常に同じjsonを持つ200を返すjsonHandler
です:
HttpHandlers.of(200,
Headers.of("Content-Type", "application/json"),
Files.readString(Path.of("some.json")));
または常に405で返信するnotAllowedHandler
- メソッドは許可されず、許可されるメソッドのセットを示します:
HttpHandlers.of(405, Headers.of("Allow", "GET"), "");
ハンドラの機能を拡張または拡張するには、handleOrElse
を使用します。これにより、特定のハンドラを補完できます。 たとえば、jsonHandler
をnotAllowedHandlerで補完します:
Predicate<Request> IS_GET = r -> r.getRequestMethod().equals("GET");
var handler = HttpHandlers.handleOrElse(IS_GET, jsonHandler, notAllowedHandler);
前述のhandleOrElse handler
は、if-elseのような構造を提供します。リクエスト・メソッドが"GET"の場合、交換の処理はjsonHandler
に委任され、それ以外の場合は交換の処理はnotAllowedHandler
に委任されます。- 導入されたバージョン:
- 18
-
メソッドのサマリー
修飾子と型メソッド説明static HttpHandler
handleOrElse
(Predicate<Request> handlerTest, HttpHandler handler, HttpHandler fallbackHandler) 条件付きHttpHandler
を別のハンドラで補完します。static HttpHandler
指定されたstatusCode
、headers
およびbody
で構成されるレスポンスを送信するHttpHandler
を返します。
-
メソッドの詳細
-
handleOrElse
public static HttpHandler handleOrElse(Predicate<Request> handlerTest, HttpHandler handler, HttpHandler fallbackHandler) 条件付きHttpHandler
を別のハンドラで補完します。このメソッドは、handleOrElseハンドラ(if-else like構文)を作成します。 リクエストが
handlerTest
述語に一致するExchangesは、handler
によって処理されます。 残りの交換はすべてfallbackHandler
によって処理されます。ネストされたhandleOrElseハンドラの例:
Predicate<Request> IS_GET = r -> r.getRequestMethod().equals("GET"); Predicate<Request> WANTS_DIGEST = r -> r.getRequestHeaders().containsKey("Want-Digest"); var h1 = new SomeHandler(); var h2 = HttpHandlers.handleOrElse(IS_GET, new SomeGetHandler(), h1); var h3 = HttpHandlers.handleOrElse(WANTS_DIGEST.and(IS_GET), new SomeDigestHandler(), h2);
h3
handleOrElseハンドラは、"Want-Digest"リクエスト・ヘッダーが存在し、リクエスト・メソッドがGET
の場合、交換の処理をSomeDigestHandler
に委任します。それ以外の場合は、交換の処理をh2
ハンドラに委任します。h2
handleOrElseハンドラは、リクエスト・メソッドがGET
の場合、SomeGetHandler
に交換の処理を委任します。それ以外の場合は、交換の処理をh1
ハンドラに委任します。h1
ハンドラは、以前にSomeGetHandler
またはSomeDigestHandler
に委任されていないすべての交換を処理します。- パラメータ:
handlerTest
- リクエスト述語handler
- 条件付きハンドラfallbackHandler
- フォールバック・ハンドラ- 戻り値:
- ハンドラ
- 例外:
NullPointerException
- いずれかの引数がnullの場合
-
of
public static HttpHandler of(int statusCode, Headers headers, String body) 指定されたstatusCode
、headers
およびbody
で構成されるレスポンスを送信するHttpHandler
を返します。このメソッドは、リクエスト本文を読取りおよび破棄してレスポンス状態を設定し、レスポンスを送信するハンドラを作成します。
headers
は、レスポンスの有効なヘッダーです。 レスポンス「本文バイト」は、body
のUTF-8
エンコード・バイト・シーケンスです。 指定されたstatusCode
および本文バイトの長さが(本文が空の場合は-1
)のレスポンス・ヘッダー「送信済」。 ボディ・バイトは、本文が空でないかぎりレスポンス本文として送信され、その場合はレスポンス本文が送信されません。- パラメータ:
statusCode
- レスポンス・ステータス・コードheaders
- ヘッダーbody
- レスポンス本文文字列- 戻り値:
- ハンドラ
- 例外:
IllegalArgumentException
- rfc2616に従って、statusCodeが正の3桁の整数でない場合、セクション6.1.1NullPointerException
- ヘッダーまたは本文がnullの場合
-