由于功能要求,我正在开发一个Web API,我想在其中添加对所有媒体类型的支持。我也试图在课堂级别和方法级别上提供@consumes("*/(")
。但是当我尝试使用application/json
标题中的Content-Type
媒体类型访问我的api时,它对我没有用。
我已经查看了@consumes注释的实现,其默认值为*/*
,因此我尝试将此注释用作@consumes
,因此它可以添加默认值,但是也不行。
目前我已将此注释用作
@Consumes({"application/*","text/*"})
允许客户端使用这些媒体类型组中的任何一种媒体类型访问我的API。但是,如果客户端使用multipart/signed
或任何其他媒体类型发送请求,它仍会混乱。
答案 0 :(得分:2)
您应该不要在资源类或方法上使用@Consume
注释来使用所有媒体类型。
根据规范,第3.5章,声明媒体类型功能:
应用程序类可以声明支持的请求和响应 使用@Consumes和@Produces注释的媒体类型 分别。这些注释可以应用于资源方法,a 资源类,或实体提供者(参见第4.2.3节)。用于 资源方法上的这些注释会覆盖资源上的任何注释 类或在实体提供程序上的方法参数或返回类型。 在没有任何这些注释的情况下,支持任何媒体 假设类型(“
*/*
”)。