我的服务方法生成此 MediaTypes
之一,它可能生成 pdf
或 excel
文件或其他文件。
@Produces({"application/pdf","application/vnd.ms-excel"...
我的问题
我的服务始终返回带有 application/pdf
的响应类型,即使它生成 excel
。为什么?
然后我重新安排了 MediaTypes
。
@Produces({"application/vnd.ms-excel","application/pdf",...
现在它为所有响应提供 application/vnd.ms-excel
类型,又是为什么?
我正在为客户端使用 com.sun.jersey
API 并通过使用
clientResponse.getType()
可能我认为我误解了 @Produces
注释的概念。
请澄清。
以下是我的服务方法的代码。
response = Response.ok((Object) file);//file is Object of File
response.header("Content-Disposition","attachment; filename="+filename);
//filename can be a.pdf b.xlsx etc
return response.build();
最佳答案
JAX-RS 方法应该根据请求的 Accept
header 的值来确定首选内容类型。如果做不到这一点,它应该默认为第一个指定的。
虽然 JAX-RS spec在这个问题上有些模糊,Jersey documentation对选择机制的描述非常清晰。
关于java - JAX-RS 中的@Produces 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24257314/