Spring-Boot отключить кодирование передачи из заголовка ответа

Формулировка проблемы - простая служба RESTful в Spring-Boot (2.0.1.RELEASE и встроенный Tomcat Server) возвращает ответ, например,

HTTP/1.1 200
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Date: Tue, 01 May 2018 00:33:04 GMT

7d
{the-json-response-anticipated}
0

После поиска я обнаружил, что это вызвано заголовком Transfer-Encoding: chunked. Пытался установить следующее в application.properties

spring.http.encoding.force=false
spring.http.encoding.enabled=false

Но бесполезно. Любые способы отключить то же самое?
Должен ли я написать явный код для формирования заголовка с параметром, установленным asfalse, и установить его в заголовок ответа?


person soufrk    schedule 01.05.2018    source источник
comment
Почему вы хотите отключить ответ chunked? Для больших ответов кодировка chunked - единственный способ избежать огромных буферов на стороне сервера.   -  person Christopher Schultz    schedule 06.05.2018
comment
Скажем, ответ короткий и предопределенный, и я хочу посмотреть, можно ли сократить время за счет предварительного не фрагментированного ответа. Поскольку тот, кто использует эту услугу, еще не обновился до современных стандартов и хочет повода.   -  person soufrk    schedule 09.05.2018


Ответы (1)


Этого можно добиться, явно добавив заголовок HttpHeaders.CONTENT_LENGTH, как показано ниже:

Пример:

@RequestMapping(value = "/contacts", method = RequestMethod.POST)
public Map<String, ContactInfo> addContactInfo(
                            @RequestBody Map<String, ContactInfo> ContactInfoDto,    
                            @RequestHeader(value = HttpHeaders.CONTENT_LENGTH, required = true) Long contentLength)
{ 
    ... 
}

Вы можете просмотреть этот ответ по SO для получения дополнительных сведений.

Надеюсь это поможет!

person N00b Pr0grammer    schedule 01.05.2018
comment
Я не уверен насчет механики здесь (то есть аннотаций), но да, правильный способ избежать кодирования фрагментов - указать заголовок ответа Content-Length. - person Christopher Schultz; 09.05.2018
comment
Этот код потребует, чтобы вызывающая сторона установила заголовок длины содержимого для использования этой конечной точки. Я считаю, что здесь спрашивают, как изменить это в ответе. Принятый ответ в этой ссылке выглядит более подходящим. - person Robert Zahm; 07.12.2018