WebApiClient 如何设置 Header
使用 Header
注解
可以在 IHttpApi
接口上使用,也可以在接口方法上使用;
同一个接口或者方法上可以使用多次,相同 Key 后定义的会覆盖前面的;
接口和方法上同时定义相同 Key 的时候,优先使用接口上的;
csharp
/// <summary>
/// 服务管理 API
/// </summary>
[Header("token", "token value")]
[Header("token", "new token value")]
[Header("tokenclass", "token class value")]
public interface IWinServices : IHttpApi
{
/// <summary>
/// 修改
/// </summary>
/// <returns></returns>
[HttpPost("api/job/win-services/update")]
[JsonReturn]
[Header("token", "token method value")]
[Header("header1", "111111")]
[Header("header2", "222222")]
Task<Result> Update([JsonContent] UpdateParameter parameter);
}
使用过滤器添加 Header
创建一个 IApiActionFilter
实现类 ApiTokenFilter.cs。
这个例子是 .NET 的,.NET Core 中可以使用 Task.CompletedTask
来代替 Task.FromResult<object>(null)
。
csharp
class ApiTokenFilter : IApiActionFilter
{
public Task OnBeginRequestAsync(ApiActionContext context)
{
context.RequestMessage.Headers.Add("token", "token value from filter");
return Task.FromResult<object>(null);
}
public Task OnEndRequestAsync(ApiActionContext context)
{
return Task.FromResult<object>(null);
}
}
然后在注册 API 时将该过滤器添加到 GlobalFilters
。
csharp
HttpApiFactory.Add<IWinServices>().ConfigureHttpApiConfig(c =>
{
c.HttpHost = new Uri("http://localhost:7072/");
c.FormatOptions = new FormatOptions() { UseCamelCase = true };
c.GlobalFilters.Add(new ApiTokenFilter());
});