【发布时间】: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 legitimate4) 代码缺乏type safety5) 执行的任何重构都会破坏代码 - 尽管直到运行时您才会知道 -
如果您不想手工制作客户端代理,您可以通过 T4 模板 代码生成它们
-
好点,所以解决方案是创建 80 种不同的客户端方法?
-
你可以,但是当遇到这个问题时,我如前所述通过 T4 代码生成它们。
标签: c# asp.net-web-api2 client data-access-layer apiclient