Класс 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);
Приведённый выше handler handleOrElse предоставляет конструкцию, похожую на if-else: если метод запроса — "GET", обработка обмена передаётся jsonHandler, в противном случае обработка обмена передаётся notAllowedHandler.- Начиная с:
- 18
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static HttpHandler |
handleOrElse |
Дополняет условный HttpHandler другим обработчиком. |
static HttpHandler |
of |
Возвращает HttpHandler, отправляющий ответ, состоящий из заданных statusCode, headers и body. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создаёт и возвращает копию этого объекта. |
boolean |
equals |
Указывает, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарело, планируется удаление: этот элемент API может быть удалён в будущей версии. Финализация устарела и может быть удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ожидать пробуждения, обычно после получения уведомления (notified) или прерывания (interrupted). |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно после получения уведомления (notified) или прерывания (interrupted), либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ожидать пробуждения, обычно после получения уведомления (notified) или прерывания (interrupted), либо до истечения заданного промежутка реального времени. |
Подробное описание методов
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 не является положительным целым числом из трёх цифр согласно разделу 6.1.1 RFC 2616 -
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.