java - 基于带有 Spring WebMVC REST Controller 的接受 header 的不同响应实体主体

标签 java spring rest spring-mvc xml-serialization

我有一个带有这样的方法签名的 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 等。

您只需要为适当的对象类型设置编码器。

此处的文档:

http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html#produces ()

关于java - 基于带有 Spring WebMVC REST Controller 的接受 header 的不同响应实体主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272443/

相关文章:

Java - HashCode - 等于

java - 从 AMR-NB 文件中提取音频帧

java - 如何将字符串转换为整数以用于 Velocity 中的循环?

java - 从 Configuration-annotated 类注册 beans

REST API - 设计考虑

java - 如何使用 Google appengine 项目在 Eclipse 中引用另一个项目?

jquery - CORS 问题 - 请求的资源上不存在 'Access-Control-Allow-Origin' header

java - 无法读取候选组件类: file [%path%/TestEntity.类];嵌套异常是 java.lang.ArrayIndexOutOfBoundsException: 130

java - RESTful servlet URL - web.xml 中的 servlet 映射

java - 如何使用 Jersey (REST) 读取 GET 请求的输入 XML?