Spec-Zone.ru › OpenJDK 21

Класс HttpHandlers

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

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


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

    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 of(int statusCode, Headers headers, String body)
Возвращает обработчик, который отправляет ответ, содержащий указанные 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 . Обработчик h2 handleOrElse, в свою очередь, делегирует обработку обмена обработчику SomeGetHandler если метод запроса равен GET, в противном случае он делегирует обработку обмена обработчику h1 . Обработчик h1 обрабатывает все обмены, которые не делегированы ни обработчику SomeGetHandler ни обработчику SomeDigestHandler.
Параметры:
handlerTest - предикат запроса
handler - условный обработчик
fallbackHandler - обработчик по умолчанию
Возвращает:
обработчик
Бросает:
NullPointerException - если какой-либо аргумент равен null

of

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

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

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

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

© 1993, 2023, 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://docs.oracle.com/en/java/javase/21/docs/api/jdk.httpserver/com/sun/net/httpserver/HttpHandlers.html

Spec-Zone.ru

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