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 服务器