2013-12-20 40 views
0

我有一個REST端點,它當前返回JSON輸出。我想修改相同的端點來返回純文本輸出,主要區分生成application/jsontext/plainAccept標題。這裏是我當前的配置 -Spring 3:內容協商

servlet.xml中:

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> 
    <property name="defaultContentType" value="application/json" /> 
    <property name="ignoreAcceptHeader" value="true" /> 
    <property name="order" value="0" /> 
    <property name="mediaTypes"> 
     <map> 
      <entry key="text" value="text/plain" /> 
      <entry key="json" value="application/json" /> 
     </map> 
    </property> 

    <property name="defaultViews"> 
     <list> 
      <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> 

REST端點:

@RequestMapping(value = "/emps", method = RequestMethod.GET, produces = {"application/json"}) 
@ResponseStatus(HttpStatus.OK) 
public @ResponseBody List<Employee> getEmpsList() throws VMException { 
    final List<Employee> eList = getAllEmployees(); 
    return eList; 
} 

我試着修改產品到{"application/json", "text/plain"}。 T閱讀一些在線的東西,並且由於我要返回一個bean,我需要使用HttpMessageConverter來返回text/plain輸出。我能夠通過編寫兩種方法來獲得這項工作,一種返回application/json輸出和其他返回text/plain輸出。甚至有可能將其結合到單個方法實現中,或者重要的是,根據請求的輸出格式返回結果,即jsontext

在此先感謝您的幫助。

更新:附加postman客戶端插件的圖像。

圖片1: Image1 圖片2: Image2

+0

當您進行更改時實際發生了什麼?沒有改變? 405或406? – Vidya

+0

是的,我得到了406.謝謝@Vidya。 – devang

+0

您可以在您的請求中顯示您的「Accept」標頭的樣子嗎? – Vidya

回答

0

目前你有這樣的:

<property name="ignoreAcceptHeader" value="true" /> 

其實,你不想忽略Accept頭。刪除它,看看會發生什麼。

另外,mediaTypes只有在您通過擴展/格式尋求資源時纔是相關的,在這裏似乎不是這種情況。