WebApiClient

An open source project based on the HttpClient. You only need to define the c# interface and modify the related features to invoke the client library of the remote http interface asynchronously.

MIT License

Stars
2K
Committers
16

Bot releases are visible (Hide)

WebApiClient -

Published by xljiulang almost 6 years ago

  • ApiActionContext增加HttpApi属性
  • TokenClient增加TimeOut、FormatOptions属性
  • 重构ApiTask、ApiTask<>,ApiRetryTask<>,ApiHandleTask<>以支持单元测试
  • 重构DataAnnotations,相关Attribute不再sealed封装,支持单元测试;
  • 扩展方法统一合并到Extensions静态类
  • FormatScope.All值由3改为0,以支持未来增加更多枚举值
  • 更高的单元测覆盖率
WebApiClient -

Published by xljiulang almost 6 years ago

  • 修复xml内容编码描述与实际编码不一致的BUG;
  • IApiReturnAttribute增加BeforeRequestAsync(ApiActionContext context)方法;
  • ApiReturnAttribute增加ConfigureAccept抽象方法,用于配置Accept请求头;
  • AutoReturnAttribute、JsonReturnAttirbute、XmlReturnAttirbute均配置对应的Accept请求头;
WebApiClient -

Published by xljiulang almost 6 years ago

  • 增加UriAttribute,原有UrlAttribute与System.ComponentModel.DataAnnotations.UrlAttribute名称冲突使用不便。
  • ApiActionContext增加CancellationTokens属性以支持上层的请求自定义取消
  • 移除HttpApiRequestMessage.Timeout属性,超时功能通过ApiActionContext.CancellationTokens实现
  • 增加内部CancellationTokenAttribute类型,以支持接口的参数类型为CancellationToken类型
  • 增加IApiParameterAttributeProvider接口和HttpApiConfig的DefaultApiParameterAttributeProvider静态属性,以支持更多的系统类型在缺省参数特性下就可以做接口参数。
WebApiClient -

Published by xljiulang about 6 years ago

  • 修复Http请求后没有立即释放CancellationTokenSource资源的问题;
  • 更换为LifetimeInterceptor由CancellationTokenSource实现;
  • HttpApiFactory增加KeepCookieContaine功能和配置;
  • Socket的IO事件回调改为本地方法。
WebApiClient -

Published by xljiulang about 6 years ago

  • 增加重量级功能:HttpApiFactory;
  • 解决WebApiClient.AOT在运行时拦截器拦截的接口错乱的可能性。
WebApiClient -

Published by xljiulang about 6 years ago

  • ApiActionFilterAttribute增加Enable属性
  • HttpApiConfig增加LoggerFactory属性
  • TraceFilterAttribute通过LoggerFactory实现;
  • 增加ITask非泛型接口,ITask<>可以转换为非泛型ITask;
WebApiClient -

Published by xljiulang about 6 years ago

  • 增加默认的User-Agent为 "WebApiClient.JIT/{版本}"
  • 删除ITokenClient接口,TokenClient不再是静态类,解决AOT下找不到ITokenClient的代理类问题;
  • 优化XmlFormatter的序列化性能;
  • 增加内部接口:IIgnoreWhenNullable、IDateTimeFormatable、IEncodingable
  • 移除IHttpClient和Defaults.HttpClient,变更理念见wiki的高级篇;
  • 将HttpApiClient.HttpHost与HttpClient的BaseAddress关联;
  • 使用Lambda静态类替换PropertyGetter和PropertySetter,提高委托的代码质量;
  • 调整Cookie和Proxy逻辑,Proxy不再能够在请求中更换;
  • 修复[Header("Cookie","key=value")]多次请求会多次重复添加到CookieContainner的问题;
  • 增加TraceFilterAttribute,方便开发过程中的请求和响应内容追踪;
WebApiClient -

Published by xljiulang about 6 years ago

  • 提升UriEditor的Replace方法性能;
  • 增加HttpResponseWrapper和HttpResponseFile类,删除HttpResponseMessage类的扩展;
  • 修改UrlEncodedContent的默认编码;
  • 增加HttpContent相关特性的GET、HEAD请求检测;
  • 修改HttpRequestHeader枚举对应的请求名为严格遵循大小写规范;
  • 修复AOT模式下构建代理类时,将MethodInfo类型字段定义为其基类MemberInfo类型的问题;
  • JsonPatchDocument类型增加请求方法支持的检测;
  • 对ApiReturnDescriptor的部分属性归类到新的DataTypeDescriptor类型的DataType属性;
WebApiClient -

Published by xljiulang about 6 years ago

  • 修复v0.1.7版本application/x-www-form-urlencoded中文问题
WebApiClient -

Published by xljiulang about 6 years ago

  • 增加JsonPatchDocument类型
WebApiClient -

Published by xljiulang about 6 years ago

  • 修改和完善UrlBuider
  • 重构WebApiClient.AOT build日志
  • 重构AuthTokenFilter
WebApiClient -

Published by xljiulang about 6 years ago

  • 增加UseSocketsHttpHandler静态属性;
  • 修复PathQueryAttribute拼接URL的正确性问题;
  • 去掉WebApiClient.AOT引用包名时错误列表提示“找不到文件编译输出的程序集"
WebApiClient -

Published by xljiulang over 6 years ago

  • 修复IsSuccessStatusCode的&&逻辑
  • HttpStatusFailureException异常增加ReadAs相关方法
WebApiClient -

Published by xljiulang over 6 years ago

  • HttpApiConfig支持外部HttpClient实例;
  • 修复UseCamelCase配置失效的BUG;
WebApiClient -

Published by xljiulang over 6 years ago

  • 修复序列化时字典类型和KeyValuePair类型的Key的CamelCase失效问题
  • 修正TokenResult的IdToken拼写错误问题
  • 修复token第二次超时之后timer失效的问题
  • ITokenClient的RequestRefreshTokenAsync方法增加客户端秘钥参数
WebApiClient -

Published by xljiulang over 6 years ago

  • 增加HttpPatchAttribute
  • 增加ApiReturnNotSupportException
  • 完善异常类型和提示
  • 完善项目文件
WebApiClient -

Published by xljiulang over 6 years ago

  • AOT.Task项目重命名为BuildTask
  • 删除BuildTask对WebApiClient的依赖
  • 移除Microsoft.Build*.dll的打包,减小nuget包体积
WebApiClient -

Published by xljiulang over 6 years ago

  • WebApiClient.AOT支持泛型接口的泛型参数约束
  • 简化代理类IL指令
  • 增加IL指令Castclass指令
  • 解决AOT.Task编译时插入IL后,目标程序集引用的运行时错误问题
WebApiClient -

Published by xljiulang over 6 years ago

  • WebApiClient.AOT 支持嵌套的私有接口声明
  • WebApiClient.AOT支持泛型接口;
  • 程序集使用强命名
WebApiClient -

Published by xljiulang over 6 years ago

  • AOT.Task.dll支持45+和.netcoreapp1.1+
  • 减小WebApiClient.AOT nuget包的大小