如何在 C# 中创建动态 Web api 客户端?
Posted
技术标签:
【中文标题】如何在 C# 中创建动态 Web api 客户端?【英文标题】:How to create a dynamic web api client in c#? 【发布时间】: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 代码生成它们。
【参考方案1】:
如果您不想重复制作客户端 API 的任务,我建议您尝试 NSwag 工具的 swagger,它有很好的工具来完成它。 另外,我认为您提到的动态代理没有任何方法。
【讨论】:
以上是关于如何在 C# 中创建动态 Web api 客户端?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 MongoDB 将动态 JSON 属性发布到 C# ASP.Net Core Web API?