我有一个带有这样的方法签名的 Controller
@RequestMapping(value = "/{project:[A-Z0-9_+\\.\\(\\)=\\-]+}", method = RequestMethod.GET)
public ResponseEntity<Object> lookupProject(@PathVariable String project,
@RequestParam(value = "fields", required = false) String fields,
@RequestParam(value = "asList", required = false, defaultValue = "false") boolean asList);
我正在返回 JSON a Collection<Object>
或Map<String, Object>
。这不适合 XML。我宁愿返回 Project
对象。
是否有一种干净的方法来确定将生成哪种内容类型?解决方法是另一种仅生成 XML 并返回 Project
的方法。目的。我宁愿避免重复的代码。
我使用的是 Spring 3.1.3-RELEASE。
最佳答案
根据 Spring 文档,您的 Produces 参数将根据 Accept 返回内容,即
@RequestMapping(value="/someUrl/", produces="application/*")
public Project someControllerMethod(...)
如果该方法接受 application/xml,该方法将生成 XML,如果该方法接受 application/json,它将生成 json 等。
您只需要为适当的对象类型设置编码器。
此处的文档:
关于java - 基于带有 Spring WebMVC REST Controller 的接受 header 的不同响应实体主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272443/