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

How do I proxy API requests in a JAMstack solution?

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

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

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

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

这个问题的标准解决方案是什么?或者代理对 JAMstack 解决方案不可用?是否有 JAMstack 供应商可以解决这个问题?

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

您可以将 proxy redirects 存储在部署站点根目录下的 _redirects 中。换句话说,该文件需要存在于要在构建后部署的站点目录的根目录中。

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

因此请致电:

/api/v1/gifs/random?tag=cat&api_key=your_api_key

将被代理到:

https://api.example.com/v1/gifs/random?tag=cat&api_key=your_api_key

If the API supports standard HTTP caching mechanisms like Etags or Last-Modified headers, the responses will even get cached by CDN nodes.

注意: 您也可以 setup your redirects 在您的 netlify.toml