您可以在SpringMVC中为单个路径指定首选的默认媒体类型吗



我有一个Jersey应用程序,它已转换为Spring MVC。我不认为有一项功能可以直接通过端口连接,那就是如果没有指定,则可以按路径指定首选介质类型。在泽西岛,我可以指定";qs";属性,如果没有指定响应类型(或者如果在Accept标头中指定了多个选项,我相信这个值乘以了指定的质量分数),它将使用它来确定发送哪种响应类型。

@Produces("application/json")
@GET
@Path("/some/path")
public Response preferredResponseType() {
  //Implementation goes here
}
@Produces({"application/schema+json;qs=0.9"})
@GET
@Path("/some/path")
public Response otherResponseType() {
  //Implementation goes here
}

在本例中,如果我对没有Accept头的/some/path执行GET请求,它将返回application/json响应。

在Spring MVC中,我看不到任何简单的方法可以做到这一点,尤其是如果我想将默认值限制为仅应用于一个端点(应用程序中还有其他端点应该有不同的首选默认值)。我确实看到有一种全局设置默认内容类型的方法(根据ContentNegotiationConfigurer中的"defaultContentType"one_answers"defaultContentTypeStrategy"方法),但这并不容易解决每个路径的用例。

有没有一种简单的方法可以实现不同于应用程序全局默认值的每路径介质类型默认值?

Spring发行19050请求此功能。根据那里的对话,似乎没有简单的方法来声明性地指定要使用的默认内容类型。此外,Spring团队已经决定不实现该功能,从而解决了这个问题。

"defaultContentTypeStrategy"允许提供您自己的ContentNegotiationStrategy来使用。它可以访问完整的请求,所以您可以使用AntPathMatcher轻松地做出基于路径的决策。

相关内容

  • 没有找到相关文章

最新更新