我有一个部署在Kubernetes(谷歌云)上的应用程序。要使部署正常工作,它需要向“/healthz”和“/"返回200状态响应。我在Express服务器上设置了这个路由,返回如下响应:
app.use('/healthz', ((_req, res) => {
logGeneral.info("Health Status check called.");
res.sendStatus(200);
}));
但是我不知道如何为我的前端做同样的事情,它运行在Next. js/ React上。不支持res.send等命令。
有人知道吗?
谢谢
6条答案
按热度按时间uxhixvfz1#
使用API路由是正确的答案。在/pages/API中创建一个名为healthcheck.js的新文件,内容如下:
端点将位于(hostname)/API/healthcheck
1tuwyuhd2#
我也有类似的要求。我不得不在AWS上部署代码,我需要一个健康检查URL,比如http://localhost:4000/ping
我创建了一个名为ping/index.js的文件,其中包含以下内容-
参考文献-
1tu0hz3e3#
如果你必须使用
/healthz
的根路径,你可以按照这里的建议添加一个API路由;另外,您在
next.config.js
中定义了一个重写,因此/healthz
将由/api/health
在内部处理;ggazkfy84#
在next.js中使用API路由,这似乎是处理此类情况的正确方法
https://nextjs.org/docs/api-routes/introduction
hjzp0vay5#
添加到@Koen回答。
如果您的应用正在运行basePath,例如。“/abc”,并且您希望从健康检查URL中排除
basePath
,例如https://example.com/healthz然后下面的代码在k8/docker容器中工作。
在
next.config.js
中参考:https://nextjs.org/docs/api-reference/next.config.js/rewrites
2q5ifsrm6#
使用Next.js 13 app route,您可以添加一个健康检查端点,如下所示:
src/app/api/health/route.ts
(/api/health
)src/app/healthz/route.ts
(/healthz
)或者如果需要纯文本
https://nextjs.org/docs/app/building-your-application/routing/router-handlers