封装WebAPI客户端,附赠Nuget打包上传VS拓展工具
标签:
一、前言上篇《 WebAPI使用多个xml文件生成帮助文档 》有提到为什么会出现基于多个xml文件生成帮助文档的解决方案,因为定义的模型可能的用处有:
1:单元测试
2:其他项目引用(可能以Nuget包的形式)
3:WebAPI客户端(封装的HttpClient及WebAPI接口调用,其实包含在第2点内..)
要源码的可以直接拉到最下面,,源码一如既往的还在那。
二、为什么要封装WebAPI客户端1:让WebAPI对于调用者来说“透明”,直接以引用程序集的方式。
2:统一项目内调用入口(当然了,非要绕过直接去请求接口肯定也是可以得,但是这是团队管理的问题)。
3:组合接口调用
4:版本化(通过Nuget,不论是自建还是Nuget.org)
三、封装的WebAPI客户端都包含些什么这里继续使用 WebAPI2PostMan 项目来演示。
首先,因为将WebAPI的接口以HttpClient来进行封装,那至少需要定义出接口的请求路由,此处仅定义出了两处。
我们在解决方案新建一个类库项目,并将其命名为 WebAPI2PostMan.Client ,接着添加一个名为 WebApi2PostManStatic 的类
using System.Configuration;
namespace WebAPI2PostMan.Client
{
/// <summary>
/// WebApi2PostMan静态资源类
/// </summary>
public class WebApi2PostManStatic
{
/// <summary>
/// 服务地址
/// </summary>
public static string ServiceUrl = ConfigurationManager.AppSettings["WebAPI2PostManServiceUrl"];
/// <summary>
/// 获取所有产品
/// </summary>
public static string RouteProductGetAll = "api/Product/All";
/// <summary>
/// 添加产品
/// </summary>
public static string RouteProductAdd = "api/Product/Add";
}
}
接口请求无非就是Http的那几个方法,但此处仅认为我们的接口只包含Get和Post两种Http请求方法。
基于此,我们定义出一个WebApiHelper类。
/// <summary>
/// WebAPI帮助类
/// </summary>
public class WebApiHelper
{
public static T1 CallPostWebApi<T1, T2>(string url, T2 request, string serviceUrl, int? timeOut = 10)
public static T1 CallGetWebApi<T1>(string url, string serviceUrl, int? timeOut = 10)
public static List<TResponse> CallWebApiBatch<TRequest, TResponse>(HttpMethod method, string endpoint, List<TRequest> batchRequestModels, string url, string serviceUrl, int? timeOut = 10)
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/71038.html