Feign 接入第三方restful api 入门

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Feign 接入第三方restful api 入门相关的知识,希望对你有一定的参考价值。

参考技术A

通常来说,很多人用feign是用于内部环境的spring cloud微服务调用。但feign其实是封装了http请求,那调用外部restful api是没有问题的。

在此讲下集成步骤,还有几种配置方法,以及一些注意点。

这里要注意的是,和springboot 版本匹配问题. 一开始使用了2.* 的feign版本,而我的springboot 是 2.6.5,然后报spring boot configration类找不到。更新feign到3.1.1就可以了。

这个各种文章都有,

代码示例:

还是比较简洁的,不过, 似乎依赖spring框架比较多 ,不知道在其他环境集成是不是还是这么简单。

因为配置请求参数,和统一的业务处理我是放在一起的,所以这里也一起说明。

API请求的参数,主要包括像格式、字符集等。而统一业务处理,比如像加签、加密这些。

feign的配置有三种方式,按照作用域如下

根据我的日志打印,是先调用2的实例配置,再调用全局配置。 假如两个都配置,需要注意这个优先级。

======= local ApiInterceptor start ========

======= local ApiInterceptor end ========

======= global ApiInterceptor start ========

======= global ApiInterceptor end ========

使用 @Configuration 的配置注入,并且需要 实现 RequestInterceptor 接口。

作用域是全局的,所以不适合做业务相关的处理。不过你假如只有一个client配置,写这里也无妨。

业务处理的方式,是获取body或者query参数,处理后,再放到header, query, body中去。

因为全局配置会影响所有的feign,所以假如项目中有不同的feign client,使用的时候不应该采用全局。

实例配置,自己建立一个interceptor,然后在ApiClient中配置

注意,实例的配置不应该加入@Configuration 的注解 ,防止被注入。


这种配置方式就是直接在requestMap上增加,其实之前写的 method 就是如此。还可以增加其他的,比如如下,就是请求乱码可以增加一下header。


好了,集成入门就到此。简单使用应该问题不大了。 假如生产使用,还需要测试性能,连接池等问题。


我是窝牛,专注于各种大杂烩,各种都写,都写不好。欢迎讨论交流。

Spring Cloud入门 - REST客户端Feign

1、简介

  在Spring Cloud集群中,各个角色的通信基于REST服务,因此在调用服务时,就不可避免的需要使用REST服务的请求客户端了。

  Spring 中自带了RestTemplate,RestTemplate使用HttpClient发送请求。

  Spring Cloud 将Feign 框架集成到了 Spring Cloud 的 Netflix 项目中,在其中结合 Ribbon 实现了 负载均衡,所以,我们平时在使用的时候,可能感觉不到 Ribbon 的存在。

 

2、常用的 REST 客户端

  1) Apache CXF

  2) Restlet

 

3、单独使用 Feign 

  1)新建一个 HelloClient 接口

public interface HelloClient
    @RequestLine("GET /hello")
    String sayHello();

  2)执行请求

public class HelloTest
    public static void mian(String[] args)
        //这一步调用target实际上是用到了AOP的JDK动态代理,生成了一个
        //代理对象,在调用方法时,由Feign.Client执行了发送请求,这里的请求是AOP中的 “Advice” 
        HelloClient hello=Feign.builder().target(HelloClient.class,
            "http://localhost:8080/");
        //调用Hello接口的方法
        System.out.println(hello.sayHello());
  }

 

4、Feign 原理解析
  由上面的例子,我们便可以看出,Feign实际是利用了AOP在为 **Client 接口生成了代理对象,然后利用 “Advice” 的织入,来发送了HTTP请求

 

5、Spring Cloud集成 Feign

  Spring Cloud中集成 Feign 实际上是利用了 Feign 提供的 “翻译器” ,将 Spring Web 中的注解 翻译 给了 Feign 听

  例如:

    Spring Web 中的常见注解 @GetMapping("/hello") ,Spring Cloud 翻译后,相当于 Feign 的

    @RequestLine("GET /hello")

以上是关于Feign 接入第三方restful api 入门的主要内容,如果未能解决你的问题,请参考以下文章

SpringCloud之Feign:REST客户端

Feign入门

Magento 2 REST API入门

spring cloud 学习 - feign入门

一不小心又踩了feign的坑

Spring Cloud 入门教程: 用声明式REST客户端Feign调用远端HTTP服务