我正在尝试使用一个可以返回jpeg类型或png类型的图像的Jersey REST服务,原因是因为该服务只能访问并返回二进制数据,并且无法判断它是否为jpeg图像或png图像。
如果我使用以下声明,浏览器将显示二进制数据。
@Produces("image/*")
但是,如果我对jpeg图像使用以下内容,则会显示正确的图像。
@Produces("image/jpeg").
我想知道如何使用单个声明来使浏览器识别出正确的图像类型(jpeg或png)?
答案 0 :(得分:4)
根据JAX-RS规范,允许列出多种媒体类型:
@Produces({"image/png", "image/jpeg", "image/gif"})
请参阅:https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/Produces.html
<强>更新强> 有关详细信息,请参阅@ forty-two的答案。
答案 1 :(得分:4)
如果服务不知道类型,则它不能比image/*
更具体。但是,您可以检查数据的前几个字节到detect类型并相应地添加Content-Type
标头。
请注意,具有多个@Produces注释的目的是用于内容协商,其中用户代理表达所需资源表示,并且服务器使用适当的数据变体来回答,例如, JPEG 或 PNG。