2013-12-20 2 views
0

У меня есть конечная точка REST, которая в настоящее время возвращает выход JSON. Я хотел бы изменить одну и ту же конечную точку, чтобы возвращать текстовый вывод, в основном различать генерацию application/json и text/plainAccept заголовки. Вот моя текущая конфигурация -Весна 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 читает некоторые онлайн-материалы, и, поскольку я возвращаю фасоль, мне нужно использовать HttpMessageConverter для возврата text/plain. Я смог получить эту работу, написав два метода: один возвращающий вывод application/json и другие возвращаемые выходные данные text/plain. Возможно ли совместить это с реализацией единого метода или, что важно, возвращать результат на основе запрошенного формата вывода, то есть json или text.

Заранее благодарим за помощь.

Обновление: Прикрепление образа плагина клиента почтальона.

Изображение 1: Image1 Изображение 2: Image2

+0

Что на самом деле происходит, когда вы вносите изменения? Никаких изменений вообще? 405 или 406? – Vidya

+0

Да, я получаю 406. Спасибо @ Видья. – devang

+0

Можете ли вы показать примеры того, как выглядит ваш заголовок 'Accept' в ваших запросах? – Vidya

ответ

0

В настоящее время у вас есть это:

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

В самом деле, вы не хотите, чтобы игнорировать заголовок Accept. Удалите это и посмотрите, что произойдет.

Кроме того, mediaTypes релевантны только в том случае, если вы ищете источники по расширению/формату, что, похоже, не здесь.

Смежные вопросы