我是API网关新手,有一个理解问题。
我也尝试将一系列(微)服务放在端点后面。
为此,我设置了一个 ASP.NET Core 应用程序并添加了包三哺乳动物豹猫 https://github.com/ThreeMammals/Ocelot。
在文档的帮助下,我配置了上游和下游。
到目前为止,一切都很好。
客户提出请求http://mygateway:4242/s1/ http://mygateway:4242/s1/{api},例如,按预期从 Service1 获取 JSON 或 XML 响应。
同样的行为http://mygateway:4242/s2/ http://mygateway:4242/s2/{api} 也达到了预期的结果!
我的理解问题在于Service3。
当我发送请求至http://mygateway/s3/ 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/xyz.css并不是http://mygateway:4242/ http://mygateway:4242/s3/xyz.css ,因此响应是 404 未找到,因为“mygateway”对“xyz.css”一无所知
我该如何解决这个路由(?)问题?
用ocelot中间件可以解决这个问题吗?或者我还需要使用 SinglePageApplication (SPA) 来实现服务 (Service3) 的其他功能吗?
也许将 SPA 放置在网关后面根本不可能或错误?
我希望您能给我一些访问网关后面的 SPA 或 MVC 网站的提示。
谢谢 iBot
UPATE:附上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>