Отправка пользовательского Content-Type с ResponseEntity <Resource> - PullRequest
11 голосов
/ 31 мая 2011

Я пытаюсь использовать тип возврата ResponseEntity в моем контроллере Spring WebMVC 3.0.5. Я возвращаю изображение, поэтому хочу установить тип содержимого на image / gif со следующим кодом:

@RequestMapping(value="/*.gif")
public ResponseEntity<Resource> sendGif() throws FileNotFoundException {
    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.IMAGE_GIF);
    return new ResponseEntity<Resource>(ctx.getResource("/images/space.gif"), headers, HttpStatus.OK);
}

Однако тип возвращаемого значения переопределяется на text / html в ResourceHttpMessageConverter.

Кроме реализации моего собственного HttpMessageConverter и внедрения его в AnnotationMethodHandlerAdapter, есть ли способ заставить тип содержимого?

Ответы [ 4 ]

11 голосов
/ 31 мая 2011

попробуйте внедрить объект HttpServletResponse и принудительно установить тип содержимого оттуда.

 @RequestMapping(value="/*.gif") 
 public ResponseEntity<Resource> sendGif(final HttpServletResponse response) throws FileNotFoundException {
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.IMAGE_GIF);
            response.setContentType("image/gif"); // set the content type
            return new ResponseEntity<Resource>(ctx.getResource("/images/space.gif"), headers, HttpStatus.OK);
        }
9 голосов
/ 26 июня 2018

Другое предложение:

return ResponseEntity
                  .ok()
                  .contentType(MediaType.IMAGE_GIF)
                  .body(resource);
0 голосов
/ 20 сентября 2018

Это должен быть подход для установки всех параметров, таких как httpStatus, contentType и body

ResponseEntity.status (status) .contentType (MediaType.APPLICATION_JSON) .body (response);

В этом образце используется интерфейс ResponseEntity.BodyBuilder.

0 голосов
/ 08 августа 2018

Эти два подхода верны.Вы также можете использовать ResponseEntity<?> сверху, чтобы отправлять несколько типов данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...