5.19HttpDeclarativeBuilder 构建器

HttpDeclarativeBuilder 构建器是框架提供专门用来动态构建 HTTP 声明式请求所需的各项设置。HttpDeclarativeBuilder 的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 HttpRequestBuilder.Declarative 的多个静态重载

HttpDeclarativeBuilder 构建器是框架提供专门用来动态构建 HTTP 声明式请求所需的各项设置。HttpDeclarativeBuilder 的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 HttpRequestBuilder.Declarative 的多个静态重载方法创建 HttpDeclarativeBuilder 的实例。

cs
HttpRequestBuilder.Declarative(methodInfo, args);

上述代码演示了如何利用 MethodInfo 类型参数和参数数组来动态构建一个 HTTP 声明式请求构建器。这一机制使得我们能够针对任意类型的方法实现 HTTP 声明式请求功能。以下是一个具体的例子:

cs
public class NormalClass{    [Get("https://furion.net"/)]    public Task<string> GetStringAsync()    {        throw new NotImplementedException();    // 无需实现    }}

通过以下步骤,我们可以动态地基于 NormalClassGetStringAsync 方法构建 HTTP 声明式请求:

cs
// 获取 NormalClass 类型的 GetStringAsync 方法var getStringMethod = typeof(NormalClass).GetMethod(nameof(NormalClass.GetStringAsync), BindingFlags.Instance | BindingFlags.Public);// 发送 HTTP 请求var str = await httpRemoteService.SendAsAsync<string>(HttpRequestBuilder.Declarative(getStringMethod, []));

通过这种方式,我们实现了对任意类型方法的 HTTP 声明式请求的动态构建。此外,HTTP 声明式请求还支持多种方法,包括但不限于:

cs
httpRemoteService.Declarative(method, args);await httpRemoteService.DeclarativeAsync<T>(method, args);httpRemoteService.SendAs(httpDeclarativeBuilder);await httpRemoteService.SendAsAsync<T>(httpDeclarativeBuilder);