2012-08-05 36 views
3

我試圖創建RESTful Web服務將根據請求的內容類型返回JSON或XML返回XML或JSON:Spring MVC的REST - 根據請求的內容類型

我的控制器看起來是這樣的:

@Controller 
public class RESTController { 

    @RequestMapping(value="/rest/{id}", method=RequestMethod.GET) 
    @ResponseBody 
    public User getUser(@PathVariable Long id){ 
     User user = ..... 
     return user; 
    } 

我的用戶類別是這樣的:

@XStreamAlias("user") 
public class User { 

    private long id; 
    private String firstName; 
    private String lastName; 
     other setters and getters.............. 
} 

最後我servlet.xml中看起來是這樣的:

<mvc:annotation-driven /> 
<context:annotation-config /> 
<context:component-scan base-package="com.vanilla.rest.controllers" /> 

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
    <property name="ignoreAcceptHeader" value="true" /> 
    <property name="favorPathExtension" value="false" /> 
    <property name="order" value="1" /> 
    <property name="mediaTypes"> 
     <map> 
      <entry key="xml" value="application/xml" /> 
      <entry key="json" value="application/json" /> 
     </map> 
    </property> 
    <property name="defaultViews"> 
     <list> 
      <ref bean="xmlView"/> 
      <ref bean="jsonView"/> 
     </list> 
    </property> 
</bean> 

<bean id="jsonView" 
     class="org.springframework.web.servlet.view.json.MappingJacksonJsonView"> 
    <property name="contentType" value="application/json;charset=UTF-8"/> 
    <property name="disableCaching" value="false"/> 
</bean> 

<bean id="xmlView" 
     class="org.springframework.web.servlet.view.xml.MarshallingView"> 
    <property name="contentType" value="application/xml;charset=UTF-8"/> 
    <constructor-arg> 
     <ref bean="xstreamMarshaller"/> 
    </constructor-arg> 
</bean> 

<bean id="xstreamMarshaller" class="org.springframework.oxm.xstream.XStreamMarshaller"> 
    <property name="autodetectAnnotations" value="true" /> 
    <property name="annotatedClass" value="com.vanilla.rest.entities.User"/> 
</bean> 

我的問題是,無論我發送什麼內容類型,我總是得到JSON響應。

enter image description here

+0

您在哪裏指定方法產生的結果? – Razvan 2012-08-05 15:26:17

回答

10

看起來你需要

Accept: application/xml 

添加到您的請求頭。