Примените GZipHandler в Jetty для определенных путей - PullRequest
0 голосов
/ 22 февраля 2019

Как включить только определенные пути, которые соответствуют шаблону для GZipHandler в Jetty 9.4.Например, у меня есть сопоставление запроса к пути /api/employees/{id}/payments.Мне нужно применить сжатие GZip только к этому пути.Jetty поддерживает только точное совпадение, или префикс (/*), или суффикс (*.) во включаемых путях.Могу ли я настроить GZipHandler для сжатия только запросов по пути /api/employees/{id}/payments, например /api/employees/1/payments, /api/employees/42/payments и т. Д.

1 Ответ

0 голосов
/ 25 февраля 2019

Jetty GzipHandler поддерживает стандартные сопоставления URL-шаблона сервлета.

Ваше «сопоставление запроса» /api/employees/{id}/payments не является допустимой строкой шаблона URL-адреса сервлета.

Это похоже на RESTСтрока API, которая выполняется полностью в вашей REST-библиотеке, без участия спецификации сервлета или API-интерфейса сервлета.

Вместо того, чтобы пытаться управлять GzipHandler по путям (include / exclude), рассмотрите возможность настройкиОтображения Mime-Type, на которые он должен реагировать.Таким образом, вы можете установить путь включения к /api/* и сделать, чтобы mime-типы включали решать, какой контент должен быть сжат или нет.Имейте в виду, что GzipHandler не будет сжимать, если http-клиент не указал, что он может обрабатывать gzip (он проверяет заголовки запроса Accept и Accept-Encoding), поэтому было бы безопасно привести большую сеть.

Также рассмотрите возможность настройки конфигурации минимального размера setMinGzipSize(int), чтобы крошечные / маленькие ответы не доставались без необходимости.

...