Я определил контроллер (см. Ниже) и указал, что он производит JSON, однако при запросе (с использованием curl) возвращается Content-Type
из text/html
. Я могу переопределить это, установив заголовок непосредственно на HttpServletResponse
, но я не был уверен, было ли это ожидаемым поведением, и если да, то то, что я делаю, является правильным обходным путем.Контент-тип Spring Controller
@Controller
@RequestMapping(value = "/test", produces = MediaType.APPLICATION_JSON_VALUE)
public class Test {
@RequestMapping(value = "/home", method = RequestMethod.GET)
public String home(final Model model, final HttpServletRequest request, final HttpServletResponse response) {
return "some/freemarker/template/path";
}
}
Content-Type: text/html;charset=UTF-8
Update:
Я хотел бы добавить, что я использую Freemarker как технология просмотра.
Что такое фактическое содержание тела вы получаете? Я сомневаюсь, что на самом деле это не JSON, а HTML-страница, возможно, tomcat 404 или любой другой. – shazin
Из [doc] (http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework /web/bind/annotation/RequestMapping.html#produces--): 'запрос только отображается, если Accept соответствует одному из этих типов медиа. Итак, при запросе вы добавили заголовок 'Accept' в свой запрос, оцененный' application/json'? – sp00m
@shazin Тело действительное JSON выпускается из шаблонов Freemarker. – Steve