天天看点

Feign简介-1-入门介绍

1. 什么是 Feign

Feign

的英文表意为“假装,伪装,变形”, 是一个 Http 请求调用的轻量级框架,可以以 Java 接口注解的方式调用 Http 请求,而不用像 Java 中通过封装 HTTP 请求报文的方式直接调用。

Feign

通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。

2. Feign 解决了什么问题

Feign 封装 HTTP 调用流程,面向接口编程。

Feign 本身很简单,但做了大量的适配工作,这也是这个框架存在的意义。

下面是http请求的服务流程
Feign简介-1-入门介绍

根据上图的分析可知:要实现

Feign

客户端,主要是将 Method 方法的参数解析成 Http 请求的请求行、请求行、请求体,然后使用 HttpClient 发送请求。

3.Feign 声明式注解

Feign 通过

Contract

接口将方法上标注的注解解析成 MethodMetadata,最终将参数解析成 Http 请求的请求行、请求行、请求体,然后使用 HttpClient 发送请求。

下面是一些Feign的注解
Annotation Interface Target Usage

@RequestLine

Method 定义HttpMethod 和 UriTemplate. UriTemplate 中使用

{}

包裹的表达式,可以通过在方法参数上使用@Param 自动注入

@Param

Parameter 定义模板变量,模板变量的值可以使用名称的方式使用模板注入解析

@Headers

Method, Type 定义头部模板变量,使用@Param 注解提供参数值的注入。如果该注解添加在接口类上,则所有的请求都会携带对应的Header信息;如果在方法上,则只会添加到对应的方法请求上

@QueryMap

Parameter 定义一个Map或 POJO,参数值将会被转换成URL上的 query 字符串上

@HeaderMap

Parameter

Map

->

Http Headers

@Body

Method Defines a

Template

, similar to a

UriTemplate

and

HeaderTemplate

, that uses

@Param

annotated values to resolve the corresponding

Expressions

.

feign的执行过程

Feign简介-1-入门介绍
参考:https://blog.csdn.net/zhangyingchengqi/article/details/109381983