最全面的总结spring cloud Feign的常见问题

本文详细总结了使用Spring Cloud Feign时遇到的两个常见问题:1) 缺乏HTTP方法注解,解决方案是确保使用正确注解并配置Contract;2) 遇到status 400错误,可能是参数、header或请求方法问题。通过分析错误原因,提供了针对性的解决策略,包括参数处理、header设置和配置调整。
摘要由CSDN通过智能技术生成

本文踩坑有二:

  1. not annotated with HTTP method type (ex. GET, POST)
  2. FeignException$BadRequest: status 400

1.not annotated with HTTP method

报错内容如下:

java.lang.IllegalStateException:
 Method XXX not annotated with HTTP method type (ex. GET, POST)

Feign可以使用自带注解@RequestLine以及spring的注解@RequestMapping、@GetMapping等

几个需要注意的点:

  • 使用spring的注解@RequestMapping需要指定method属性以及value(路径信息)
  • 看了很多其他博客说不可以使用@GetMapping等这类注解,本人亲测,可以使用
  • 第三点比较重要的
    如果使用Feign自带注解@RequestLine,需要修改默认配置。spring cloud netflix默认为feign提供的默认bean如下:
Decoder feignDecoder:ResponseEntityDecoder(其中包含SpringDecoder)

Encoder feignEncoder:SpringEncoder

Logger feignLogger:Slf4jLogger

Contract feignContract:SpringMvcContract

Feign.Builder feignBuilder:HystrixFeign.Builder

Client feignClient:如果Ribbon启用,则为LoadBalancerFeignClient,否则将使用默认的feign客户端。

看上方的Contract feignContract:SpringMvcContract,说明feign默认使用springmvc的协议或者约定,使用@RequestMapping的注解,若需要使用@RequestLine,需要修改约束配置,如下

@Configuration
public class Configuration {
   
    @Bean
    public Contract feignContract() {
   
        return new feign.Contract.Default();
    }
}

在feignclient注解里配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值