泽西多重生产

ang*_*yip 8 java jax-rs jersey

我在这里遵循球衣教程,以弄清楚如何产生多个mime输出.从他们的网站,这是推荐的方式:

@GET
@Produces({"application/xml", "application/json"})
    public String doGetAsXmlOrJson() {
    ...
}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚的是如何抽象@Produces,以便我的代码更欢迎它可以产生的其他mime类型.比方说,我有500个方法都有这个注释:

@Produces({"application/xml", "application/json"})
Run Code Online (Sandbox Code Playgroud)

如果我要求将kml添加为mime类型,则编辑和替换所有这些值肯定会非常耗时.

@Produces({"application/xml", "application/json", "application/kml"})
Run Code Online (Sandbox Code Playgroud)

是否有可能更有效地构建@Produces,以便我不会遇到这个问题?

cas*_*lin 10

理解@Produces注释

@Produces注释用于指定MIME媒体类型表示的资源可以产生和发送回客户端.

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

在没有@Produces注释的情况下,*/*假定支持任何媒体类型().有关完整参考,请查看JAX-RS规范.

你可以做什么

要减少@Produces代码中的注释量,可以注释资源类,而不是注释资源方法.


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

@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
Run Code Online (Sandbox Code Playgroud)

看看MediaType课程.