Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js NextJS应用程序和express server之间的内部API调用和通信_Node.js_Reactjs_Express_Next.js_Server Side Rendering - Fatal编程技术网

Node.js NextJS应用程序和express server之间的内部API调用和通信

Node.js NextJS应用程序和express server之间的内部API调用和通信,node.js,reactjs,express,next.js,server-side-rendering,Node.js,Reactjs,Express,Next.js,Server Side Rendering,我有一个应用程序有一个。Mypages/index.js正在对我的快速路线/api/users进行内部调用。这是使用同构unfetch内部getinitialprops()完成的,如下所示: const res = await fetch('http://localhost:3000/api/users'); 我的定制express服务器位于NextJS之上,它具有返回JSON数据的API路由。像这样: //some code before const app = next({ dev })

我有一个应用程序有一个。My
pages/index.js
正在对我的快速路线
/api/users
进行内部调用。这是使用
同构unfetch
内部
getinitialprops()
完成的,如下所示:

const res = await fetch('http://localhost:3000/api/users');
我的定制express服务器位于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响应

这是api和渲染器之间常用的分离模式

为了保护您的api端点,您需要实现某种授权,express中有一个用于自动执行的公共库,名为,您可以检查类型,它支持大多数常用方法

我个人更喜欢,因为它允许使用我的服务器的许多实例,因为服务器上没有用户会话