Spec-Zone.ru › OpenJDK 24

Класс HttpHandlers

java.lang.Object
com.sun.net.httpserver.HttpHandlers
public final class HttpHandlers extends Object
Реализации HttpHandler, которые реализуют различные полезные обработчики, такие как обработчик статических ответов или условный обработчик, который дополняет один обработчик другим.

Фабричный метод of(int, Headers, String) предоставляет способ создания обработчиков с предварительно заданным состоянием статического ответа. Например, jsonHandler, который всегда возвращает 200 с тем же JSON:


    HttpHandlers.of(200,
                    Headers.of("Content-Type", "application/json"),
                    Files.readString(Path.of("some.json")));
 
или notAllowedHandler, который всегда отвечает с 405 — Method Not Allowed и указывает набор разрешённых методов:

    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.
Since:
18

Краткое описание методов

Модификатор и тип Метод Описание
static HttpHandler handleOrElse(Predicate<Request> handlerTest, HttpHandler handler, HttpHandler fallbackHandler)
Дополняет условный HttpHandler другим обработчиком.
static HttpHandler of(int statusCode, Headers headers, String body)
Возвращает HttpHandler, который отправляет ответ, содержащий указанный statusCode, headers и body.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание методов

handleOrElse

public static HttpHandler handleOrElse(Predicate<Request> handlerTest, HttpHandler handler, HttpHandler fallbackHandler)
Дополняет условный HttpHandler другим обработчиком.

Этот метод создаёт обработчик handleOrElse; конструкцию, подобную if-else. Обмены, запрос которых соответствует предикату handlerTest, обрабатываются 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);
 
Обработчик handleOrElse h3 делегирует обработку обмена SomeDigestHandler, если заголовок запроса "Want-Digest" присутствует и метод запроса — GET, в противном случае он делегирует обработку обмена обработчику h2. Обработчик handleOrElse h2, в свою очередь, делегирует обработку обмена SomeGetHandler, если метод запроса — GET, в противном случае он делегирует обработку обмена обработчику h1. Обработчик h1 обрабатывает все обмены, которые не были делегированы ни SomeGetHandler, ни SomeDigestHandler.
Параметры:
handlerTest — предикат запроса
handler — условный обработчик
fallbackHandler — обработчик по умолчанию
Возвращает:
обработчик
Исключения:
NullPointerException — если любой аргумент равен null

of

public static HttpHandler of(int statusCode, Headers headers, String body)
Возвращает HttpHandler, который отправляет ответ, содержащий указанный statusCode, headers и body.

Этот метод создаёт обработчик, который считывает и отбрасывает тело запроса перед установкой состояния ответа и отправкой ответа.

headers являются эффективными заголовками ответа. Байты тела ответа — UTF-8 закодированная последовательность байтов body. Заголовки ответа отправляются с указанным statusCode и длиной байтов тела (или -1, если тело пустое). Байты тела отправляются как тело ответа, если только тело не пустое, в этом случае тело ответа не отправляется.

Параметры:
statusCode — код состояния ответа
headers — заголовки
body — строка тела ответа
Возвращает:
обработчик
Исключения:
IllegalArgumentException — если statusCode не является положительным 3-значным целым числом, согласно rfc2616, раздел 6.1.1
NullPointerException — если headers или body равны null

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://download.java.net/java/early_access/jdk24/docs/api/jdk.httpserver/com/sun/net/httpserver/HttpHandlers.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API