-
Notifications
You must be signed in to change notification settings - Fork 447
WebApiClient QA
一般情况下,应该使用单例模式来创建HttpApiClient,也就是说HttpApiClient的实例需要保存起来,直到不再利用(比如程序退出了),因为HttpApiClient支持并发,有些接口是有cookie衔接的,再说了创建HttpApiClient是有一点点性能损耗的。
Create方法在缺省HttpApiConfig参数的情况下,T类型接口继承了IDisposable,开发者才可以自主控制T接口实例的生命周期,如果Create时使用了HttpApiConfig参数,接口是可以不用继承IDisposable的。其实接口还可以继承IHttpApiClient,因为接口的HttpApiClient代理类本身就实现了IHttpApiClient接口。
可以,只有IHttpApiClient、IDisposable是特殊接口,继承的其它接口都当作Api接口。
可以使用ProxyValidator对象的Validate方法来验证代理的有效性。
这个是设计的原因,不是技术原因,不管开发者关不关注返回值,Http在正常情况下必然有响应,如果你不关注结果的解析,应该声明为Task<HttpResponseMessage>
,不去解析HttpResponseMessage就行。
你应该将接口返回类型声明为ITask<HttpResponseMessage>
,然后自己保存里面的流;或者使用ITask<HttpResponseMessage>
的SaveAs()扩展方法保存为文件。
还可以声明为ITask<string>
、ITask<Stream>
和ITask<Byte[]>
,这些都是抽象的返回类型。
可以这样声明,数据还是子类的,但xml序列化会有问题,一般情况下,建议严格按照服务器的具体类型来声明参数。