SpringCloud网关调用用户微服务报Content type '' not supported错误
错误产生原因
getUser接口错误配置了consumes属性:consumes用于限制请求体的Content-Type类型,而GET请求本身无请求体,请求头不会携带Content-Type字段,刚好触发Content type '' not supported报错。- 参数注解使用错误:接口路径配置为
@GetMapping(value = "/{userId}"),说明userId是路径参数,但代码中使用了@RequestParam注解获取参数,无法正确读取路径中的用户ID值。 - 若用户微服务Controller类未配置
@RequestMapping("/users")前缀,网关重写后的/users/{userId}路径无法匹配到该接口,也会导致请求异常。
解决办法
- 删除
getUser接口@GetMapping注解中的consumes配置项,GET请求不需要限制请求体类型,修改后的注解如下:
@GetMapping(value = "/{userId}", produces = {MediaType.APPLICATION_XML_VALUE, MediaType.APPLICATION_JSON_VALUE})
- 修正参数注解,将
@RequestParam String userId替换为@PathVariable String userId,正确获取路径中的用户ID参数。 - 检查用户微服务对应Controller类,确认添加了
@RequestMapping("/users")前缀注解,保证网关重写后的路径可以正确匹配到接口。 - 若用户微服务内部调用相册微服务时仍有异常,检查调用所用的HTTP客户端(RestTemplate/OpenFeign等)配置,确认携带了正确的
Accept请求头,匹配相册接口支持的返回类型。
内容的提问来源于stack exchange,提问作者Joydeep Mazumder
相关产品推荐
相关产品推荐

