我正在遵循 Jersey 教程here弄清楚一个人将如何产生多个mime输出。在他们的网站上,这是推荐的方式:

@GET
@Produces({"application/xml", "application/json"})
    public String doGetAsXmlOrJson() {
    ...
}

我无法弄清楚的是如何将@Produces抽象化,以便我的代码更欢迎使用它可以产生的其他mime类型。举例来说,我有500个方法都带有此批注:
@Produces({"application/xml", "application/json"})

如果我要求将kml添加为mime类型,那么编辑和替换所有这些值肯定会很耗时。
@Produces({"application/xml", "application/json", "application/kml"})

是否有可能更有效地设计@Produces,以便我不会在以后遇到这个问题?

最佳答案

了解@Produces批注

@Produces 批注用于指定资源可以生成并发送回客户端的表示形式的MIME媒体类型。

JAX-RS运行时将传入请求的 Accept header 的值与 @Produces 批注的值进行比较,以匹配将处理此类请求的资源方法。

在没有 @Produces 批注的情况下,假定支持任何媒体类型(*/*)。有关完整引用,请检查JAX-RS specification

你可以做什么

为了减少代码中 @Produces 批注的数量,您可以批注资源类而不是批注资源方法。

提示:要减少打印错误,可以使用常量值:

@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })

看一看 MediaType 类。

关于java - Jersey 多种农产品,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38488903/

10-12 01:23