NextJS 应用程序和 express 服务器之间的内部 API 调用和通信

Posted

技术标签:

【中文标题】NextJS 应用程序和 express 服务器之间的内部 API 调用和通信【英文标题】:Internal API calls and communication between NextJS app and express server 【发布时间】:2019-10-30 01:29:30 【问题描述】:

我有一个带有custom express server 的NextJS 应用程序。我的pages/index.js 正在内部呼叫我的快速路由/api/users。这是在getinitialprops() 中使用isomorphic-unfetch 完成的,如下所示:

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

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

//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】:

这是区分 api 和渲染器的常用模式。

为了保护您的 api 端点,您需要实现某种授权,express 中有一个用于 auturization 的通用库,称为passport,您可以检查类型,它支持大多数常用方法。

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

【讨论】:

以上是关于NextJS 应用程序和 express 服务器之间的内部 API 调用和通信的主要内容,如果未能解决你的问题,请参考以下文章

使用 NextJS + Express 在本地主机上进行 HTTPS

NextJS with Express:将文件复制到服务器并运行“npm run start”失败

Router.push 没有重定向我; Nextjs 与 Express 服务器

NextJS,Express,WebSocket 握手期间出错:意外响应代码:200

NextJS vs Express [关闭]

如何在 NextJS 应用程序中从 Apollo 链接上下文访问 Express HTTP 请求?