如何在spring Controller 的方法中获取HttpServletResponse object
,以便我的应用程序与Http API保持松散耦合?
谢谢...
编辑:实际上我想要的是在我的 Controller 中设置HttpServletResponse对象的ContentType.spring是否为此提供了任何方法而没有将HttpServletResponse对象作为 Controller 方法中的参数?
最佳答案
我可以看到两个选项:
如果您想要的内容类型是静态的,则可以将其添加到@RequestMapping
中,例如
@RequestMapping(value="...", produces="text/plain")
但是,仅当HTTP请求的
Accept
header 中包含相同的content-type时,此方法才有效。参见16.3.2.5 Producible Media Types。或者,使用
ResponseEntity
,例如@RequestMapping("/something")
public ResponseEntity<String> handle() {
HttpHeaders responseHeaders = new HttpHeaders();
responseHeaders.setContentType(new MediaType("text", "plain"));
return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED);
}
MediaType
还具有一些定义为常量的常见mime类型,例如MediaType.TEXT_PLAIN
。参见16.3.3.6 Using
HttpEntity<?>