【问题标题】:Asp.net Web Api as an Api GatewayAsp.net Web Api 作为 Api 网关
【发布时间】:2016-02-02 12:02:55
【问题描述】:

在我的组织中,我有几个 asp.net web api 项目。
我愿意开发一个 web api,它就像一个网关并且有一个入口点。

我尝试了处理程序和过滤器,但路由不允许我这样做。

让我解释一下,我真正想做的事情

让 HumanResourceProject 在:api.domain.com/api/hr
示例控制器是 api/hr/LeaveRecord/GetByEmployee/
让 CRMProject 在:api.domain.com/api/crm

示例控制器是 api/crm/Customers/GetByRegion/
让网关位于:api.domain.com/api/gateway

我希望我的网关能够处理诸如
之类的请求 1. api.domain.com/api/gateway/api/crm/Customers/GetByRegion/

api.domain.com/api/gateway/api/hr/LeaveRecord/GetByEmployee/

  1. 制作一些控件,例如 ip/access/browser 等。

  2. 我想调用正确的 api 控制器 api/crm/Customers/GetByRegion/

  3. 被调用 api 的控制器返回响应。

【问题讨论】:

  • 您似乎想要使用 API 网关,但话又说回来,您似乎想要使用它的只是将请求路由到相关方。如果是这种情况,请查看 IIS URL 重写。如果它托管在云中,请查看 Azure 服务总线中继。
  • 另外我想在网关中实现一些安全控制。
  • @zapoo 你找到解决办法了吗?
  • 从那时起,我就有了信任相同身份提供者的 API。 (即身份服务器4)授权和身份验证控制现在更容易了。特别是对于这个gateway pattern,我会在本地使用 nginx,在云上你有很多选择。

标签: c# asp.net-web-api


【解决方案1】:

您可以使用 IApplicationBuilder ,并在 .net 核心的 Startup 类中注入这是您的 Configure() 方法。

所以在到达实际控制器之前,您的所有请求都将由 Pre-request 处理程序处理。

 public static IApplicationBuilder MiddleWare(this IApplicationBuilder
 builder)
         {
             return builder.UseMiddleware<RequestHandler>();
         }

这里你的所有请求将首先由 RequestHandler 处理,然后再到达实际控制器。

【讨论】:

  • 虽然 5 年前 .net core 还不存在,但感谢您提醒我们现在有中间件。
猜你喜欢
  • 2017-04-05
  • 2015-07-05
  • 2023-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 2015-01-03
  • 2011-11-09
相关资源
最近更新 更多