如何在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<?>

10-08 09:05