内部API调用以及NextJS应用程序与Express服务器之间的通信

时间:2019-06-15 22:23:47

标签: node.js reactjs express next.js ssr

我有一个带有NextJScustom express server应用。我的pages/index.js正在对我的快递路线/api/users进行内部呼叫。可以使用isomorphic-unfetch内部的getinitialprops()来完成此操作:

const res = await fetch('http://localhost:3000/api/users');

我在NextJS之上的自定义快递服务器具有API路由,这些路由发送回JSON数据。像这样:

//some code before
const app = next({ dev })
const handle = app.getRequestHandler()
let apiRoutes = require('./routes/apiRoutes.js');

app.prepare().then(() => {
  const server = express()

  server.use('/api', apiRoutes);

  server.get('*', (req, res) => {
    return handle(req, res)
  })

//more code

所以我的问题是,这是我的客户端代码和服务器端代码之间进行通信的方式吗?如果是这样:

  • 如何保护这些端点,以便用户不仅可以键入myNextJSwebsite.com/api/users并获得JSON响应?

1 个答案:

答案 0 :(得分:0)

这是在api和渲染器之间进行分隔的常见模式。

为了保护您的api端点,您将需要实现某种授权,快速表达中有一个通用的lib库,名为passport,您可以检查其类型,它支持大多数常见的方法。

我个人更喜欢JWT way,因为由于服务器上没有用户会话,它可以与服务器的许多实例一起工作。