簡體   English   中英

Spring Rest Controller 返回 406 不接受 text/plain

[英]Spring Rest Controller return 406 NOT acceptable for text/plain

我對 rest controller 和 text/plain 有疑問。 我在這里閱讀了很多答案並嘗試了很多解決方案但沒有成功。 我有一個 rest controller 應該返回一個字符串作為文本/純文本。 這是我的 Controller:

@RestController
@RequestMapping(value = "/content", headers="Accept=*/*",  
produces={"text/plain", "application/json"})
public class MyController {

@GetMapping(value = "", produces = {MediaType.TEXT_PLAIN_VALUE, MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<String> getContent() {
    return ResponseEntity.ok("a,b,c\n1,2,3\n3,4,5");
}

所以當我這樣打電話時:

https://localhost:9002/rest/v2/content -H "accept: text/plain"

我得到 406 Not Acceptable Response with message: 找不到可接受的表示

但是:

https://localhost:9002/rest/v2/content -H "accept: application/json"

我得到了例外結果:

content-type: text/plain

在響應 Header 中。

我試圖在我的 WebMvcConfigurationSupport 中調整 ContenNegociationManager,如下所示:

@Override
public void configureContentNegotiation(final ContentNegotiationConfigurer configurer)
{
    configurer.favorPathExtension(false).
            favorParameter(false).
            parameterName("mediaType").
            ignoreAcceptHeader(false).
            useJaf(false).
            defaultContentType(MediaType.APPLICATION_JSON).
            mediaType("properties", MediaType.TEXT_PLAIN);
}

我也嘗試過:

mediaType("plain", MediaType.TEXT_PLAIN);

我仍然得到相同的響應 406。

我的轉換器列表定義為:

<util:list id="myConverters">
    <ref bean="customJsonHttpMessageConverter"/>
    <ref bean="customXmlHttpMessageConverter"/>
</util:list>

<bean id="customJsonHttpMessageConverter" parent="jsonHttpMessageConverter">
    <property name="jaxbContextFactory" ref="customJaxbContextFactory" />
</bean>
    
<bean id="customXmlHttpMessageConverter" parent="xmlHttpMessageConverter">
    <property name="jaxbContextFactory" ref="customJaxbContextFactory" />
</bean>

並在配置中:

@Override
protected void configureMessageConverters(final List<HttpMessageConverter<?>> converters)
{
    converters.addAll(myConverters);
}

我在這里想念什么?

謝謝@CodeScale 的提示。 我通過將 StringHttpMessageConverter 添加到我的轉換器來修復它。

@Override
protected void configureMessageConverters(final List<HttpMessageConverter<?>> converters)
{
    myConverters.add(new StringHttpMessageConverter());
    converters.addAll(myConverters);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM