java - 在 Spring MVC 中,如何在使用 @ResponseBody 时设置 mime 类型 header

标签 java json spring spring-mvc controller

我有一个返回 JSON 字符串的 Spring MVC Controller ,我想将 mimetype 设置为 application/json。我该怎么做?

@RequestMapping(method=RequestMethod.GET, value="foo/bar")
@ResponseBody
public String fooBar(){
    return myService.getJson();
}

业务对象已作为 JSON 字符串提供,因此使用 MappingJacksonJsonView 不是我的解决方案。 @ResponseBody 已经很完美了,但是如何设置 mimetype 呢?

最佳答案

使用 ResponseEntity 而不是 ResponseBody。这样您就可以访问响应 header ,并且可以设置适当的内容类型。根据Spring docs :

The HttpEntity is similar to @RequestBody and @ResponseBody. Besides getting access to the request and response body, HttpEntity (and the response-specific subclass ResponseEntity) also allows access to the request and response headers

代码如下:

@RequestMapping(method=RequestMethod.GET, value="/fooBar")
public ResponseEntity<String> fooBar2() {
    String json = "jsonResponse";
    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.setContentType(MediaType.APPLICATION_JSON);
    return new ResponseEntity<String>(json, responseHeaders, HttpStatus.CREATED);
}

关于java - 在 Spring MVC 中,如何在使用 @ResponseBody 时设置 mime 类型 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4471584/

相关文章:

java - 在 Android 中以自定义格式显示相对日期

java - Java EE 中应用服务器和数据库服务器之间的通信

json - 替代 Json.Net

java - 获取对象的嵌套数组,改造android

java - 匹配的通配符是严格的,但找不到元素 'mvc:annotation-driven' 的声明。标准包装器.Throwable

java - 如何在 Junit 中使用 @InjectMocks 和 @Autowired 注释

java - 为hadoop启用UseNUMA标志?

java - Java 中人类可读格式的 SNMP EventTime

javascript - 按多个匹配值过滤数组

java - 非法参数异常 : Invalid boolean value when injecting property to boolean in Spring