如何在 JAMstack 解决方案中代理 API 请求?

Joe*_*app 1 proxy cross-site static-site netlify jamstack

我正在开发一个几乎完全静态的网站。我使用生成器来创建所有的 HTML。

但是,我的网站是嵌入在其页面中的商店的前端。我有一个代表浏览器到后端存储的 node.js 服务器代理请求。它所做的只是提供购物车中的商品数量,以便我可以在我网站的所有页面上更新数量。那是因为浏览器不允许跨域脚本。我的服务器必须充当客户端和商店之间的代理。

(嵌入式商店是从商店的网站加载的,因此它本身不需要代理。)

我希望最终部署到 Netlify 或一些类似的 JAMstack 提供商。但我不知道如何在 Netlify 上代理。

这个问题的标准解决方案是什么?或者 JAMstack 解决方案无法使用代理?是否有解决此问题的 JAMstack 提供商?

tal*_*ves 6

Netlify 允许使用状态码为 200 的重定向路径进行代理重写。

您可以将您的代理重定向_redirects你部署的站点的根目录。换句话说,该文件需要存在于要在构建后部署的站点目录的根目录下。

_redirects /api/* https://api.example.com/:splat 200

所以打电话给:

/api/v1/gifs/random?tag=cat&api_key=your_api_key
Run Code Online (Sandbox Code Playgroud)

将被代理到:

https://api.example.com/v1/gifs/random?tag=cat&api_key=your_api_key
Run Code Online (Sandbox Code Playgroud)

如果 API 支持标准 HTTP 缓存机制,如 Etags 或 Last-Modified 标头,则响应甚至会被 CDN 节点缓存。

注意:您还可以设置您的重定向netlify.toml