美文网首页
feign注意事项

feign注意事项

作者: 米_8d62 | 来源:发表于2021-01-27 20:29 被阅读0次

Feign不支持直接使用对象作为参数请求

接口中如果有多参数需要用实体接收,要么把参数一个一个摆开,要么在对象参数上加上@RequestBody注解,让其以json方式接收,如:

@PostMapping("/account/insert")ResultData<String> insert(@RequestBody AccountDTO accountDTO);

消费者模块启动类上使用@EnableFeignClients注解后一定要指明Feign接口所在的包路径

如:@EnableFeignClients(basePackages = "com.xxxxx.feign.*")

否则你的消费者启动时会报如下的错误:


2.png

所以这里推荐你们在开发中所有feign模块最好能统一包名前缀com.xxxxx.feign

@RequestParam的坑在Feign接口层使用@RequestParam注解要注意,一定要加上value属性,

如:ResultData delete(@RequestParam("accountCode") String accountCode);

否则你会看到类似如下的错误:

Caused by: java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0这个异常

@PathVariable的坑在Feign接口层使用@PathVariable注解要注意,一定要跟上面一样加上value属性,

如:ResultData getByCode(@PathVariable(value ="accountCode") String accountCode);

否则你也会看到类似如下的错误:

Caused by: java.lang.IllegalStateException: RequestParam.value() was empty on parameter 0这个异常

在消费者配置文件中添加Feign超时时间配置

feign:
  client:
    config:
      default:
        connectTimeout: 5000
        readTimeout: 5000

否则你会经常看到如下所示的错误:

java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.8.0_112]

相关文章

网友评论

      本文标题:feign注意事项

      本文链接:https://www.haomeiwen.com/subject/femwaktx.html