我有以下问题给你。目前我有一个允许这样调用的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对象?
答案 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内容协商