gpt4 book ai didi

c# - ASP.NET Core Api-Gateway 中间件

转载 作者:太空狗 更新时间:2023-10-29 21:52:46 25 4
gpt4 key购买 nike

我是API网关的新手,有一个理解上的问题。我也尝试将一系列(微)服务放在端点后面。

为此,我设置了一个 ASP.NET Core 应用程序并添加了包 ThreeMammals Ocelot .在文档的帮助下,我配置了上游和下游。到目前为止,还不错。

sketch

客户端向http://mygateway:4242/s1/发出请求{api},例如,按预期从 Service1 获取 JSON 或 XML 响应。

http://mygateway:4242/s2/ 的行为相同{api} 也有预期的结果!

我的理解问题在于 Service3。当我向 http://mygateway/s3/ 发送请求时,我得到 index.html 作为响应。

index.html 本身通过链接标签需要 CSS 文件“xyz.css”并强制客户端加载该文件。

<head>
<link rel="stylesheet" type="text/css" href="xyz.css">
</head>

在这种情况下,客户端发送到“mygateway”的请求 URL 是 http://mygateway:4242/xyz.css并不是 http://mygateway:4242/ s3/xyz.css 等响应是 404 not found,因为“mygateway”对“xyz.css”一无所知

我该如何解决这个路由(?)问题?

是否可以用ocelot中间件解决这个问题?或者我是否需要为 SinglePageApplication (SPA) 的服务 (Service3) 提供其他东西?

也许将 SPA 放在网关后面是不可能的还是错误的?我希望你能给我一些提示,以访问网关后面的 SPA 或 MVC 网站。

谢谢 iBot


更新:附上index.html的代码。我认为这很简单。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Title</title>
<base href="/" />

<link rel="stylesheet" type="text/css" href="dist/xyz.css">

</head>
<body>
<div id="appContainer"></div>
<script src="dist/xyz.js" asp-append-version="true"></script>
</body>
</html>

最佳答案

你的架构设计错了!

首先,让我们了解一下 API 网关是什么。

API Gateway是位于应用程序编程接口(interface) ( API ) 前面的编程,充当已定义微服务组的单一入口点。

使用 API 网关的一个主要好处是,它们允许开发人员根据用例以多种方式封装应用程序的内部结构。这是因为,除了满足直接请求外,网关还可用于调用多个后端服务并聚合结果。

好的,“API Gateway”这个名字告诉我们它主要是为 API 服务而设计的! SPA 或 MVC 应用程序不是后端服务。你不应该把你的前端应用程序放在 api 网关后面。

一般来说,你的架构应该是这样的: enter image description here

API 网关是所有客户端的单一入口点。 SPA 是您服务的客户端,应该通过 API 网关调用它。如果您的应用程序有多个客户端应用程序,那么在识别多个 API 网关类型时,这可能是一个主要的支点,这样您就可以为每个客户端应用程序的需求提供不同的外观。这个案例是一个名为 “Backend for Frontend” (BFF) 的模式每个 API 网关都可以为每个客户端应用程序类型提供不同的 API。

如果您不想构建合适的架构怎么办?

  1. 您可以配置重定向。这有点像指定 API 网关的默认服务。然后所有访问 http://mygateway:4242/ 的客户端将重定向到 http://mygateway:4242/s3/
  2. Ocelot 允许中间件注入(inject)。因此,您可以注入(inject)您的自定义中间件,您将在其中检查哪个请求以及将其重定向到何处。
  3. 使用CDN存储所有css等内容。
  4. 将 css 内嵌到 html 文件中。

关于c# - ASP.NET Core Api-Gateway 中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53477140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com