调整缺省参数特性
2026/4/22小于 1 分钟
调整缺省参数特性
WebApiClientCore 是基于元数据来执行请求和处理响应,可以自定义 Api 方法的描述,填充上想要的特性即可。
UseJsonFirstApiActionDescriptor
现代 Web 接口中,json 请求几乎占据了大部分的场景,所以你的客户端接口提交的内容往往也是 json 内容。
UseJsonFirstApiActionDescriptor 行为在非 GET 或 HEAD 请求的缺省参数特性声明时,为复杂参数类型的参数自动应用 JsonContentAttribute。
services
.AddWebApiClient()
.UseJsonFirstApiActionDescriptor();配置后,以下接口的 User 参数会自动应用 [JsonContent] 特性:
public interface IUserApi
{
[HttpPost("api/users")]
Task<User> PostAsync(User user); // 无需显式标注 [JsonContent]
}验证自动应用的效果
你可以为 IUserApi 标注上一个自定义 ApiFilterAttribute 子类,用于观察调用 PostAsync 时的参数特性:
public class DebugFilterAttribute : ApiFilterAttribute
{
public override Task OnRequestAsync(ApiRequestContext context)
{
var parameters = context.ActionDescriptor.Parameters;
foreach (var param in parameters)
{
Console.WriteLine($"Parameter: {param.Name}");
foreach (var attr in param.Attributes)
{
Console.WriteLine($" Attribute: {attr.GetType().Name}");
}
}
return Task.CompletedTask;
}
}你会发现集合里面默认加上了 JsonContentAttribute。
何时使用
- 大部分接口使用 JSON 作为请求体格式
- 希望减少重复的
[JsonContent]特性标注 - 新项目推荐默认开启