如何在Next.js上设置运行状况检查的终结点?

时间:2019-09-16 12:02:54

标签: reactjs kubernetes google-cloud-platform next.js

我在Kubernetes(Google云)上部署了一个应用程序。为了使部署正常运行,它需要向“ / healthz”和“ /”返回200状态响应。我在Express服务器上将此设置为返回如下响应的路由:

app.use('/healthz', ((_req, res) => {
      logGeneral.info("Health Status check called.");
      res.sendStatus(200);
    }));

但是我不知道如何对在Next.js / React上运行的前端执行相同的操作。不支持诸如res.send之类的命令。

有人知道吗?

谢谢。

3 个答案:

答案 0 :(得分:5)

我有类似的要求。我必须将代码部署在AWS上,并且需要运行状况检查URL,例如http:// localhost:4000 / ping

我在页面内创建了一个名为ping / index.js的文件,内容如下-

// health check URL
function Ping() {
}

// This gets called on every request
export async function getServerSideProps(context) {
  context.res.end('pong');
  return { props: { } }
}

export default Ping;

enter image description here

参考文献-

  1. https://github.com/vercel/next.js/issues/6750
  2. https://nextjs.org/docs/basic-features/data-fetching#getserversideprops-server-side-rendering

答案 1 :(得分:2)

使用 API 路由是正确的答案。在 /pages/api 中创建一个名为 healthcheck.js 的新文件,内容如下:

export default function handler(req, res) {
  res.status(200).json({ "status": "ok" })
}

端点将在 (hostname)/api/healthcheck

答案 2 :(得分:0)

next.js中使用了api路由,这似乎是处理此类情况的正确方法

https://nextjs.org/docs/api-routes/introduction