了解Next.js提供的这项强大技术,以在Next.js应用程序中创建API端点
除了创造页面路线,这意味着页面作为网页提供给浏览器,Next.js可以创建API路线。
这是一个非常有趣的功能,因为这意味着Next.js可用于为Next.js本身存储和检索的数据创建前端,并通过获取请求传输JSON。
API路由位于/pages/api/
文件夹,并映射到/api
端点。
此功能是非常在创建应用程序时很有用。
在这些路由中,我们编写Node.js代码(而不是React代码)。这是一种范式转换,您可以从前端移动到后端,但是非常无缝。
说你有一个/pages/api/comments.js
文件,其目标是将博客文章的评论以JSON格式返回。
假设您有一个评论列表,该评论列表存储在comments.json
文件:
[
{
"comment": "First"
},
{
"comment": "Nice post"
}
]
这是一个示例代码,它将注释列表返回给客户端:
import comments from './comments.json'
export default (req, res) => {
res.status(200).json(feeds)
}
它将听/api/commments
GET请求的网址,您可以尝试使用浏览器调用它:
API路由也可以使用动态路由像网页一样,请使用[]
创建动态API路由的语法,例如/pages/api/comments/[id].js
它将检索特定于帖子ID的评论。
在 - 的里面[id].js
您可以检索id
通过在内部查找来获得价值req.query
目的:
import comments from '../comments.json'
export default (req, res) => {
res.status(200).json({ post: req.query.id, comments })
}
在这里,您可以看到上面的代码正在运行:
在动态页面中,您需要导入useRouter
从next/router
,然后使用获取路由器对象const router = useRouter()
,然后我们就可以获取id
值使用router.query.id
。
在服务器端,这很容易,因为查询已附加到请求对象上。
如果您执行POST请求,则所有请求均以相同的方式工作-所有操作均通过该默认导出进行。
要将POST与GET和其他HTTP方法(PUT,DELETE)分开,请查找req.method
价值:
export default (req, res) => {
switch (req.method) {
case 'GET':
//...
break
case 'POST':
//...
break
default:
res.status(405).end() //Method Not Allowed
break
}
}
此外req.query
和req.method
我们已经看到,我们可以通过引用访问cookiereq.cookies
,请求正文在req.body
。
在引擎盖下,这一切都由微是一个由支持Next.js的团队开发的支持异步HTTP微服务的库。
您可以在我们的API路由中使用任何Micro中间件来添加更多功能。
免费下载我的Next.js手册
接下来的更多教程:
- Next.js入门
- Next.js vs Gatsby vs create-react-app
- 如何安装Next.js
- 使用链接在Next.js中链接两个页面
- 路由器中Next.js中的动态内容
- 使用getInitialProps将数据馈送到Next.js组件
- 使用CSS样式化Next.js组件
- 在Next.js中预取内容
- 使用路由器检测Next.js中的活动链接
- 查看源代码以确认SSR在Next.js中正常工作
- Next.js:使用自定义标签填充head标签
- 立即部署Next.js应用程序
- Next.js:仅在Next.js的服务器端或客户端运行代码
- 在生产中部署Next.js应用
- 如何分析Next.js应用程序捆绑包
- Next.js中的延迟加载模块
- 向您的Next.js应用添加包装器组件
- Next.js添加到您的应用程序中的图标
- Next.js应用程序捆绑包
- 如何使用Next.js路由器
- 如何使用Next.js API路由
- 如何在Next.js应用中在服务器端获取Cookie
- 如何更改Next.js应用程序端口