问题标签 [ocelot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
524 浏览

c# - Ocelot 不会重新定义为微服务

我正在尝试实现我的微服务应用程序。我在 localhost:5001 上的目录 API 微服务 - 基础 CRUD。我想使用 Ocelot 实现 Api Gateway。

Catalo.API launSettings.json:

来自 API 网关的 Program.cs:

启动.cs

我正在尝试通过http://localhost:50121/catalog访问我的目录 API 我得到“Hello World!” 回答。这里有什么问题?

0 投票
2 回答
980 浏览

c# - 如何避免ocelot下游url中的端口?

端口被添加到下游 url。我想访问托管在 heroku 中的微服务。需要避开港口。请帮忙。

它在本地开发环境中工作。但在 Heroku 中部署后无法正常工作。

下游 URL 应为“ https://catalogapi-pinaki.herokuapp.com/api/CatalogApi/GetAllItems ”。

错误:消息:下游 url 为https://catalogapi-pinaki.herokuapp.com:56084/api/CatalogApi/GetAllItems

我的错误信息

0 投票
1 回答
1691 浏览

asp.net-core - ASP.NET Core Web Api 将某些请求路由到在其他端口上运行的微服务

我创建了一个 SPA,它必须与后端的各种微服务进行通信。出于部署和延迟的原因,我们必须确保前端只与一个端点通信,然后在内部路由到其他微服务。

我怎样才能使它与 ASP.NET Core 一起工作?我查看了Ocelot,它提供了非常相似的东西,但正如我在文档中看到的那样,我必须配置 IP 地址/主机名,在该 IP 地址/主机名下,将从客户端访问后端,我不知道这些信息,因为这将在之后确定部署(并且对于每台机器都可能不同,因为该服务将在各种边缘设备上运行)。

这是否可以使用一个简单的路由中间件来实现,该中间件在 url 中查找某个路径(例如 /api/otherservice),向负责的微服务(例如http://localhost:1234/api/otherservice)发送一个 http 请求并返回给来电者的信息?

我正在使用 ASP.NET Core 2.1。

更新:我设法让 ocelot 运行以将所需的路由应用到下游微服务。但是,我使用 Ocelot 的服务本身提供了路由(为 Web 应用程序前端和其他一些后端 api 路由提供服务)。有谁知道我如何告诉 Ocelot 回退到它正在运行的服务中声明的路由,如果有一条不包含在 ocelot.json 中的路由(或者相反,告诉 ASP.NET Core 只使用用于路由 id 的 ocelot 无法自行解析)。

更新 2:这是我的 ocelot 配置,它会导致无限循环:

省略第二个 (catchAll) - 路由成功路由到工具路由,但无法提供包含 Ocelot 中间件的 ASP.NET Core 服务提供的路由。

0 投票
2 回答
1056 浏览

asp.net-core - 使用 eureka 的服务发现在 docker 容器中不起作用

当我在 docker 容器中运行我的 API 网关时,它无法找到我在 eureka 中注册的服务。

API 网关

-- 豹猫.json

-- API 网关的 appsettings.json

服务配置 --appsettings.json

码头工人-compose.yml

当我运行命令 docker-compose up 并检查http://localhost:8761/时,我发现我的服务已在 eureka 服务器中注册,但我运行http://localhost:7000/sample-api/order 它返回

localhost 当前无法处理此请求。HTTP 错误 500

我检查了我的控制台窗口,然后 API 网关能够发现服务,这是日志。

0 投票
1 回答
1937 浏览

.net-core - 在自定义身份验证下运行的 Ocelot 网关 dotnet 核心尝试使用应用程序池身份发出下游请求

我正在运行 dotnet 2.2 Ocelot apigateway。我想要实现的是将自定义 api 密钥传递给网关并授权令牌沿链继续请求。这工作正常。但是,第二部分是我希望它在 Windows 帐户应用程序池标识下运行,并将请求代理到受 Windows 身份验证保护的端点。这是可以实现的吗?

我的应用程序池在网关上设置为自定义域帐户,但是我通过网关对 Windows 身份验证端点的请求被 401 未经授权的拒绝。而如果我只是将调用更改为非 Windows 身份验证保护的端点,网关会将结果返回给我。

关于这种故障点设置的任何指导要检查,或者这是否不是一种可行的方法?我希望请求将作为自定义身份帐户流动。

启动.cs

程序.cs

配置.jcs

]

0 投票
1 回答
1088 浏览

.net-core - 如何将 cookie 值转换为 Ocelot 中的标头值

我在 dotnet core 中使用微服务架构。我将 Ocelot 作为 api-gateway (BFF) 放在前面。我的主要 Web 应用程序使用 cookie 身份验证和 cookie 中的 jwt 令牌。这是为了向后兼容。我所有的新 API 都使用不记名身份验证。我想在 Ocelot 中从 cookie 中获取值并将其插入到标题中。

我已经看到在配置文件中添加了标头值。然而,由于动态特性,这将需要代码实现。实施此建议的方法是什么?

0 投票
1 回答
1616 浏览

c# - 请求标头未转发到 IdentityServer4

我使用 ocelot 作为我的微服务的 API 网关,使用 IdentityServer4 进行身份验证。在 ocelot 配置文件中,我添加了“AuthenticationOptions”并设置了 api 密钥。在启动中,我添加了身份服务器。在身份服务器中,我使用标头中的值来动态构建连接字符串。当我发送获取令牌的请求时,可以在身份服务中访问标头。但是当我使用令牌发送下一个请求时,原始标头不可用。在身份服务中只能看到“主机”标头。

有没有办法在将请求路由到身份服务器时保留原始标头?

Startup.cs(添加身份服务器)

豹猫.json

0 投票
1 回答
493 浏览

c# - 如何在 CreatedAtRoute 位置标头上添加网关基本路径 - URL 重写

我有一个 Ocelot 网关配置如下:

我有以下控制器

我希望我的 Location 标题是{domain}/serviceName/api/v1/Name/{id},但是它正在返回{domain}/api/v1/Name/{id}

任何人都知道如何使用 CreatedAtRoute 进行 URL 重写,好吗?

0 投票
1 回答
792 浏览

asp.net-core - ocelot可以用来结合angular app和api还是只适合路由api?

我正在使用 Ocelot - .NET Core 的 API 网关 https://github.com/ThreeMammals/Ocelot

设想:

我有以下网站

  • Ocelot API 网关 .NET Core
  • 站点 A - Angular 应用程序
  • 站点 B - .net 核心 API
  • 站点 C - .net 核心 API

现在我想要的是所有请求都应该首先从那里到达 ocelot 它将重定向到相应的应用程序和 API

请求首先从那里到达 Ocelot 路由应该如下所述发生

我能够路由到 /b 和 /c 到各自的 API 和应用程序。只需要知道 ocelot 是否适合路由到 App,就像我在这里使用的 Angular 一样,或者它是为微服务中的路由 api 而设计的。如果使用 Angular 应用程序,它的优缺点是什么

0 投票
1 回答
6818 浏览

microservices - API 网关上的数据聚合

我正在研究微服务架构,我想聚合来自两个微服务的数据。

例如,前端调用 API 网关,API 网关调用两个微服务 Customer 和 Order 微服务。客户微服务返回客户详细信息,订单微服务返回客户订购的所有产品。

这是使用 Ocelot 或 Azure API 管理从两个微服务聚合后 API 网关返回的格式。

格式 1

我想要的格式是格式 2。

格式 2

第二种格式可以使用 Ocelot 实现,但是数据的合并是基于网关上的 id 并且需要一些处理。

使用业务逻辑在网关上聚合数据是一种好习惯吗?如果不是这种聚合应该遵循什么做法?

如果您可以提供一些参考来使用 Azure API 管理实现此聚合,那就太好了。