服务JSON";原样;从Spring控制器使用内容协商
在我的webapp中,我的所有消息转换器都已就绪,如果我将下面的getContent更改为返回bean/pojo,它将返回“application/json;charset=UTF-8”,这是预期的,但我现在希望按原样提供json 例如,我有一个简单的存根web服务,用户可以使用它将一块JSON内容放在某个地方,然后通过一个等效的GET调用将其读回服务JSON";原样;从Spring控制器使用内容协商,json,spring-mvc,Json,Spring Mvc,在我的webapp中,我的所有消息转换器都已就绪,如果我将下面的getContent更改为返回bean/pojo,它将返回“application/json;charset=UTF-8”,这是预期的,但我现在希望按原样提供json 例如,我有一个简单的存根web服务,用户可以使用它将一块JSON内容放在某个地方,然后通过一个等效的GET调用将其读回 @Controller public class StubController { @Autowired @Qualifier("
@Controller
public class StubController {
@Autowired
@Qualifier("keyValueStore")
private KVStore kv;
@RequestMapping(value = "/stub/{id}", method = RequestMethod.GET)
public @ResponseBody
String getContent(@PathVariable("id") final String id) {
return kv.get(id);
}
@RequestMapping(value = "/stub/{id}", method = RequestMethod.PUT)
public String putContent(@PathVariable("id") final String id, @RequestBody String body) {
kv.set(id, body);
return "redirect:/stub/"+id;
}
}
但是,如果我在浏览器中调用,getter将返回标题“contenttype:text/html;charset=UTF-8”。我猜这是因为我没有返回任何被Jackson converter“转换”的内容,因此返回头没有被修改
我需要它是application/json——知道怎么做吗?也许是一个可以用来指定返回头的注释?我通过向getContent()方法添加一个HttpServletResponse参数并直接设置内容类型,成功地解决了这个问题
@RequestMapping(value = "/stub/{id}", method = RequestMethod.GET)
public @ResponseBody String getContent(@PathVariable("id") final String id, HttpServletResponse response) {
response.setContentType("application/json");
return kv.get(id);
}