从java中的RestController返回多个(xml和json)格式

时间:2015-06-23 12:08:45

标签: java json xml rest spring-mvc

我有以下问题给你。目前我有一个允许这样调用的RestController:

@RequestMapping(value = "/notifications", method = RequestMethod.POST)
public void postNotification(@RequestBody final Notification notification) {
       //DoStuffWithTheNotification
}

这是通知类:

@JsonPropertyOrder({"body", "sound", "other})
public class Notification {
        @JsonProperty
        String body;
        @JsonProperty
        String sound;
        @JsonProperty
        String other;

        // Bunch of getters,setters and what not
}

现在我要做的是以下内容:我想对此URL发出POST请求,但不是在正文中提供json文件(正如我的代码建议的那样),我想称之为在正文中使用XML文件。有没有一种简单的方法可以做到这一点,而无需创建一个全新的Notification对象?

2 个答案:

答案 0 :(得分:0)

看一下JAXB-一个xml绑定的架构。这是一篇好文章:  http://www.mkyong.com/spring-mvc/spring-3-mvc-and-xml-example/

答案 1 :(得分:0)

如果您使用的是SpringMVC,那么您可以使用内容协商器来执行此操作。这是一个小配置

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

  /**
    *  Total customization - see below for explanation.
    */
  @Override
  public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
    configurer.favorPathExtension(false).
            favorParameter(true).
            parameterName("mediaType").
            ignoreAcceptHeader(true).
            useJaf(false).
            defaultContentType(MediaType.APPLICATION_JSON).
            mediaType("xml", MediaType.APPLICATION_XML).
            mediaType("json", MediaType.APPLICATION_JSON);
  }
}

XMl配置

<bean id="contentNegotiationManager"
             class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
    <property name="favorPathExtension" value="false" />
    <property name="favorParameter" value="true" />
    <property name="parameterName" value="mediaType" />
    <property name="ignoreAcceptHeader" value="true"/>
    <property name="useJaf" value="false"/>
    <property name="defaultContentType" value="application/json" />

    <property name="mediaTypes">
        <map>
            <entry key="json" value="application/json" />
            <entry key="xml" value="application/xml" />
       </map>
    </property>
</bean>

如需进一步参考,请参阅here或仅搜索Spring mvc内容协商