【18】RequestTemplate(请求模板)源码分析
文章目录
- 前言
- 核心类
-
- RequestTemplate
- 源码分析
-
-
- 进入工厂类
-
-
- 请求参数为对象【POST】
-
- 请求参数为对象【GET】
-
- @RequestParam 注解【GET】
-
- 转换为Request
前言
紧接上文,之前分析了方法处理器是如何进行加载及执行的,其中提到了,在调用Feign 接口方法时,会根据方法参数创建请求模板(RequestTemplate),接下来我们分析下这个是如何加载及执行的。
核心类
RequestTemplate
Feign 中存在各种各样的模板类,RequestTemplate就是其中封装了执行请求需要的相关信息,比如请求方式、路径等。
RequestTemplate中封装了执行请求所需的相关信息:
// 查询模板
private final Map<String, QueryTemplate> queries = new LinkedHashMap();
// 消息头模板
private final Map<String, HeaderTemplate> headers;
// 请求的目标地址
private String target;
// URL 后面的片段
private String fragment;
// 是否已解析
private boolean resolved;
// URI 模板
private UriTemplate uriTemplate;
// 请求体模板
private BodyTemplate bodyTemplate;
// 请求方式
private HttpMethod method;
// 字符集
private transient Charset charset;
// 请求体
private Body body;
// 是否斜杠转义
private boolean decodeSlash;
// 集合格式化
private CollectionFormat collectionFormat;
// 方法元数据
private MethodMetadata methodMetadata;
// 代理的目标对象
private Target<?> feignTarget;