13

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

由于我们希望尽可能少的“端点”,我们希望所有调用,甚至是“内部”,都可以从 WebAPI Web 服务中使用我们的服务器。(即不仅仅是直接新建一个控制器实例)

我正在寻找一些东西来帮助生成或构建包含 HTTPClient 并提供强类型“代理”的 C#“客户端”。通过“添加新服务引用”生成代理时类似于 WCF。

我读过其他类似问题的问题(如在此处看到的),但想问一个与 MVC 或测试问题无关的更直接的问题。

4

4 回答 4

9

这是我正在寻找的最好的代表:

ASP.NET Web API <#= 代理到 T4 #>

介绍 WebApiProxy:使用 Intellisense 提供 JavaScript 和 C# 代理,包括 ASP.NET Web API 的文档

他将示例代码放在了 github 上:

https://github.com/RestCode/WebApiProxy

希望以后能以官方的方式出来。

于 2013-10-28T16:53:25.457 回答
4

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

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

在此处输入图像描述

于 2015-09-25T15:15:23.463 回答
1

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

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

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

于 2013-10-21T16:51:13.050 回答
1

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

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

        throw new HttpRequestException(response.ToString());
    }

但更改为您自己的错误处理等。

于 2013-10-21T17:43:45.977 回答