很多时候,我必须为使用对其他 API 的特定 api 请求(用于简化或身份验证等)的不同客户实现一个小的 web api 作为“代理”......这是一个简单的例子:
https://myproxy.intranet/api/weather => https://www.weatherapi.com/api/today
https://myproxy.intranet/api/time => https://www.timeapi.com/api/now
https://myproxy.intranet/api/currentcy => https://www.currency.com/api/dollar
在大多数情况下,API 和它们的端点是相似的,如果不相同的话,那么很多代码可以被重用。目前我创建了一些 nuget 库来解决这个问题,但问题是,我总是必须创建一个包含完整开发操作等的 WebApi 项目,并使用我的库以几乎相同的代码实现控制器。
我的想法是拥有一个 WebAPI 项目(例如 MyAwesomeProxy),它使用插件来扩展可用的 API 端点,例如:
MyAwesomeProxy => basic functions like authentication, etc.
MyAwesomeProxy/plugins/Controllers/weather.dll => proxy for the weather api is available
MyAwesomeProxy/plugins/Controllers/time.dll => proxy for the time api is available
...
所以基本上我想要的是一个可扩展的 WebApi-Project - 只需将主项目放到 IIS 中,您需要的 dll 到一个目录中,并且 api 可以按预期工作。
重要提示:由于某些 API 是客户特定的,我无法实现单体应用,只能通过许可证或设置启用和禁用可用的端点——我想防止反编译和信息泄漏。
我该怎么做?这甚至可能吗?