Asp.net Web Api作为Api网关

zap*_*poo 9 c# asp.net-web-api

在我的组织中,我有几个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/
Let Gateway at:api.domain.com/api/gateway

我希望我的网关处理请求,例如
1. api.domain.com/api/gateway/api/crm/Assients/GetByRegion /

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

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

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

  3. 返回被叫api控制器的响应.

在此输入图像描述

小智 0

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

因此,在到达实际控制器之前,您的所有请求都将由预请求处理程序处理。

 public static IApplicationBuilder MiddleWare(this IApplicationBuilder
 builder)
         {
             return builder.UseMiddleware<RequestHandler>();
         }
Run Code Online (Sandbox Code Playgroud)

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