【问题标题】:How to create a dynamic web api client in c#?如何在 C# 中创建动态 Web api 客户端?
【发布时间】:2020-02-08 17:49:13
【问题描述】:

我开发了一个包含大约 80 个不同 api 调用的 ASP.Net web api。

我想创建一个动态的 web api 客户端,让应用程序代码保持简单,并且“web api 客户端层”可重用(无需创建 80 种不同的方法)。

我希望 Web api 客户端看起来像这样:

public dynamic WebApi(string method, params object[] list)
{
     // Setting the api request by the input...
     // Calling the web api...
     // Handling the results...
}

我希望使用它的应用看起来像这样:

List<Stations> stations = WebApi("GetStationsByCompany", companyId);

现在我觉得这是一个非常常见的用例,所以我不应该自己开发它,但是我在网上找不到这个场景的任何示例(对于 .Net Framework)。

我应该如何创建动态 Web api 客户端? 它的最佳做法是什么?

【问题讨论】:

  • 这是一个常见问题,但您所描述的是 反模式,因为 1) 客户端永远不知道 operations 可用的内容2) 客户端永远不知道parameters are expected 是什么3) 服务器不知道parameters are legitimate 4) 代码缺乏type safety 5) 执行的任何重构都会破坏代码 - 尽管直到运行时您才会知道
  • 如果您不想手工制作客户端代理,您可以通过 T4 模板 代码生成它们
  • 好点,所以解决方案是创建 80 种不同的客户端方法?
  • 你可以,但是当遇到这个问题时,我如前所述通过 T4 代码生成它们。

标签: c# asp.net-web-api2 client data-access-layer apiclient


【解决方案1】:

如果您不想重复制作客户端 API 的任务,我建议您尝试 NSwag 工具的 swagger,它有很好的工具来完成它。 另外,我认为您提到的动态代理没有任何方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 2011-10-10
    • 1970-01-01
    • 2014-06-16
    相关资源
    最近更新 更多