有没有为WebAPI项目生成C#HTTPClient包装器的方法?

在即将开展的项目中,我们希望使用ASP.NET WebAPI 2向我们的网站和浏览器客户端公开服务function。

由于我们希望尽可能少的“终点”尽可能地让所有呼叫,甚至“内部”从WebAPI Web服务中消耗我们的服务器。 (即不只是直接新建控制器实例)

我正在寻找帮助生成或支持C#“客户端”的东西,它包装HTTPClient并提供强类型的“代理”。 与通过“添加新服务引用”生成代理时的WCF类似。

我已经阅读了其他类似问题的问题(如此处所见),但想要提出一个与MVC或测试问题无关的更直接的问题。

这是我所寻找的最好的代表:

http://reynders.co/2013/03/10/creating-a-proxy-for-aspnet-web-api-t4 http://reynders.co/2014/01/16/introducing-webapiproxy-providing

他把他的示例代码放在github上:

https://github.com/faniereynders/WebAPIProxy

希望这可能会在以后以官方的方式出现。

我目前正在开发.NET的开源Swagger工具链。 使用这些工具,您可以从现有DLL中选择Web API控制器,并为C#和TypeScript生成Swagger规范或客户端代码。 在Visual Studio中使用T4模板,生成过程就像WCF服务引用一样。

看看这里: http : //NSwag.org

在此处输入图像描述

我见过的提供易于使用的web apifunction的最常见方法是使用一个程序集来定义主要类以及一些postfunction。 此程序集使用JSON传输数据。

看看PayPal的集成API是如何工作的。 本质上,它们为您提供了一个程序集,其中包含所使用的各种类的定义。 有一个类用于将数据传输到服务器。

这个想法是客户不关心他们实际上是如何与你沟通的(这一切都在黑匣子里),但他们可以选择使用预定义的类或自己动手。

我说你真的不需要一个完整的库来访问数据; 如果您在公共库中定义了数据对象,则可以使用通用帮助程序方法来执行类似的操作

public static TItem GetItem(this HttpClient httpClient, string queryString) where TItem : class { var response = httpClient.GetAsync(queryString).Result; if (response.IsSuccessStatusCode) { return response.Content.ReadAsAsync().Result; } throw new HttpRequestException(response.ToString()); } 

但改变你自己的error handling等