use*_*450 5 http nginx node.js microservices api-gateway
我最近开始探索微服务和 API 网关的概念,并且对如何托管前端端点特别困惑。
如果我有一个 API 网关充当对我的所有服务的请求之间的中间人,那么前端究竟应该托管在哪里?如果我请求 /api/example,我知道我的 API 网关应该将其路由到适当的服务并转发该服务响应。但是,我不明白 API 网关应该如何在微服务上下文中处理 /home/。在这种情况下,我们希望将 /home/ 对应的 html/css/javascript 传递给发出 GET 请求的客户端。这是否意味着我们应该有某种前端服务?创建一个只返回 HTML/CSS/JS 的服务会不会是多余的并增加延迟,因为我们真正需要做的只是立即返回与我们的前端关联的 HTML/CSS/JS?
我正在考虑的另一种方法是让 API 网关本身提供端点,这些端点返回客户端呈现前端所需的 HTML/CSS/JS。换句话说,API 网关可以在接收到 /home/ 的 GET 请求时立即响应 /home/ 对应的 HTML,而不是调用服务。但是,我在网上读到 API 网关实际上不应该为端点提供服务,而只是将它们代理到服务。
这是我的主要问题:当您的后端使用微服务架构构建时,前端代码应该放在哪里?
小智 4
我假设您的前端是单页应用程序。SPA 具有 HTML、CSS、图像、字体等静态内容。它是部署为使用 REST API 从后端获取数据的静态网站的完美候选者。
在 AWS、GCP 等云环境中,建议将 SPA 应用程序与 REST API 分开托管。例如,AWS SPA 可以部署在 Amazon S3 中,并且无需通过 API 网关即可直接访问。
API 网关应该仅用于路由 REST API 调用并执行横切问题,例如身份验证等。但是这种方法的问题是,从前端访问 REST API 时会出现 CORS 错误,因为 SPA 和 API 网关将被托管在不同的域上。为了解决这个问题,需要在 API 网关启用 CORS。
如果您正在寻找更简单的解决方案,可以通过 API 网关从服务中为前端提供服务。由于静态内容在 SPA 中仅提供一次,因此对于更简单的应用程序来说,应该可以从这种方法开始。
https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html
归档时间: |
|
查看次数: |
1348 次 |
最近记录: |