我是 API 网关的新手,有一个理解问题。我也尝试在端点后面放置一系列(微)服务。
为此,我设置了一个 ASP.NET Core 应用程序并添加了ThreeMammals Ocelot包。在文档的帮助下,我配置了上游和下游。到现在为止还挺好。
客户端向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
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>