您可以为内部 ABP 路由添加前缀吗?
Can you prefix internal ABP routes?
我在 ASP.NET Core 3.1 微服务环境中使用 ABP v3.3。
我们想在我们的微服务路由前加上服务名称。
例如,会计服务将是:
/accounting/api/invoices
/accounting/api/payments
这对我们自己的控制器来说很好,因为我们可以用路由属性定义路由。例如 [Route("accounting/api/invoices")]
但是对于像
这样的内部 abp 路由
/api/abp/api-definition
在 Abp 模块中定义的控制器已经应用了这些路由属性,我们如何添加这个前缀?
除了此处不适用的常规控制器创建情况外,我在文档中找不到与此相关的任何内容。
以上是为了支持所有微服务都在内部负载均衡器后面的场景,所有 /accounting
路由应该转发到这个单一服务。当前使用 IHttpClientProxy 进行服务到服务请求时,这很麻烦,因为 /api/abp/api-definition
请求需要转发到特定的微服务。
我发现的唯一替代方法是将所有服务的根路径设置为 http://<loadbalancer>/<servicename>
,然后在每个服务中添加行
app.UsePathBase("/accounting")
从请求中删除上述路径以启用路由匹配。
然而,这确实会导致生成的 Swagger 文档因显示此额外路由路径而出现其他问题,这可能会变得混乱。
感谢任何帮助
可以,但不推荐,因为您需要替换多个代码部分。
例如
-
-
-
我在 ASP.NET Core 3.1 微服务环境中使用 ABP v3.3。
我们想在我们的微服务路由前加上服务名称。 例如,会计服务将是:
/accounting/api/invoices
/accounting/api/payments
这对我们自己的控制器来说很好,因为我们可以用路由属性定义路由。例如 [Route("accounting/api/invoices")]
但是对于像
这样的内部 abp 路由
/api/abp/api-definition
在 Abp 模块中定义的控制器已经应用了这些路由属性,我们如何添加这个前缀?
除了此处不适用的常规控制器创建情况外,我在文档中找不到与此相关的任何内容。
以上是为了支持所有微服务都在内部负载均衡器后面的场景,所有 /accounting
路由应该转发到这个单一服务。当前使用 IHttpClientProxy 进行服务到服务请求时,这很麻烦,因为 /api/abp/api-definition
请求需要转发到特定的微服务。
我发现的唯一替代方法是将所有服务的根路径设置为 http://<loadbalancer>/<servicename>
,然后在每个服务中添加行
app.UsePathBase("/accounting")
从请求中删除上述路径以启用路由匹配。
然而,这确实会导致生成的 Swagger 文档因显示此额外路由路径而出现其他问题,这可能会变得混乱。
感谢任何帮助
可以,但不推荐,因为您需要替换多个代码部分。 例如