REST服务GET接口报415 Unsupported Media Type错误求助
问题排查与解决方案
问题根源
你的GET接口错误地添加了@Consumes(MediaType.APPLICATION_JSON)注解:
@GET @Path("/alert") @Consumes(MediaType.APPLICATION_JSON) // 核心问题所在 @Produces(MediaType.APPLICATION_JSON) Response getAlert(@NonNull @Context HttpServletRequest servletRequest, @NonNull @QueryParam("merchantId") String merchantId, Map<String, String> requestContext);
HTTP规范中,GET请求不携带请求体,而@Consumes注解的作用是声明接口可接收的请求体媒体类型。当浏览器直接访问、axios发送GET请求时,即便设置了Content-Type: application/json,也不会发送实际的JSON请求体,服务器因无法匹配到可消费的媒体类型,便返回Unsupported Media Type错误。
至于fetch请求能正常工作,是因为部分JAX-RS实现(如Jersey)在GET请求无请求体时,会忽略@Consumes的校验逻辑,属于特殊场景下的兼容处理,并非标准行为。
解决方案
直接移除GET接口上的@Consumes(MediaType.APPLICATION_JSON)注解即可:
@GET @Path("/alert") @Produces(MediaType.APPLICATION_JSON) Response getAlert(@NonNull @Context HttpServletRequest servletRequest, @NonNull @QueryParam("merchantId") String merchantId, Map<String, String> requestContext);
你的接口参数均通过URL查询参数(@QueryParam)和上下文获取,完全不需要消费请求体,@Consumes注解在此属于冗余且错误的配置。
内容的提问来源于stack exchange,提问作者Leo
相关产品推荐
相关产品推荐

