1 生产者代码 一个很简单的代码
@RestController
//@Value时,所在的类,需要加上@RefreshScope;不然配置不会自动刷新。
@RefreshScope
public class UserController {
@Value("${test.name}")
private String testvalue;
@Value("${mysql.name}")
private String mysql;
@GetMapping(value = "/getClientMessage")
public String getUserMessage(String userName){
return userName+"用户名称"+testvalue+"------------------"+mysql;
}
}
消费者代码
@FeignClient(name = "nacos-test",fallback = TestFeginServiceFallBack.class )
@Component
public interface TestFeginService {
@RequestMapping(value = "/getClientMessage",method = RequestMethod.GET)
public String getUserMessage( String userName);
}
调用以后出现错误信息
feign.FeignException: status 405 reading TestFeginService#getUserMessage(String)
at feign.FeignException.errorStatus(FeignException.java:78) ~[feign-core-10.1.0.jar:na]
at feign.codec.ErrorDecoder$Default.decode(ErrorDecoder.java:93) ~[feign-core-10.1.0.jar:na]
解决方式 加上@RequestParam("userName")
@FeignClient(name = "nacos-test",fallback = TestFeginServiceFallBack.class )
@Component
public interface TestFeginService {
@RequestMapping(value = "/getClientMessage",method = RequestMethod.GET)
public String getUserMessage(@RequestParam("userName") String userName);
}
问题产生的原因 参考

本文介绍了在使用Feign进行服务调用时遇到的GET请求405错误。通过分析生产者和消费者代码,发现错误源于缺少@RequestParam注解。解决方案是在调用方法中添加@RequestParam("userName")。问题的根本原因与HTTP方法不匹配和参数传递有关,参考了优快云博主凌麟柒的Feign错误处理文章。
1万+

被折叠的 条评论
为什么被折叠?



