在 Next.js 动态 api 路由中使用 req.params 与 req.query
using req.params vs req.query in Next.js dynamic api routes
我正在尝试访问我的 Next.js API 路由中的参数。我只是想知道为什么为了访问某个动态路由 id
我必须使用 req.query
而通常在 express 中我会通过 params
访问 id
。 req.query
是访问 id
的正确方法吗?
我有以下 api 文件夹结构。
/pages
/api
/posts
-index.js
-[postId].js
在我的 [postId]
文件中,我有以下内容
function handler(req, res) {
// shows undefined
console.log(req.params);
const postId = req.params.postId;
我的api调用如下:
fetch(`/api/posts/${id}`)
参考nextJs docs,所有示例均使用req.query
获取id或其他参数:
import { useRouter } from 'next/router'
const Post = () => {
const router = useRouter()
const { pid } = router.query
return <p>Post: {pid}</p>
}
export default Post
所以这种方法没有错。
Nextjs 没有明确说明为什么他们使用 query
而不是 params
,但是在关于 dynamic routes 的部分中你可以得到一些线索:
the route /post/abc?foo=bar will have the following query object:
{ "foo": "bar", "pid": "abc" }
可能他们使用查询作为一种在一个对象中加入参数和查询的方式,或者使用这种方式更方便,因为没有关于它的参考,你不必太在意,只需使用查询并开心。
我正在尝试访问我的 Next.js API 路由中的参数。我只是想知道为什么为了访问某个动态路由 id
我必须使用 req.query
而通常在 express 中我会通过 params
访问 id
。 req.query
是访问 id
的正确方法吗?
我有以下 api 文件夹结构。
/pages
/api
/posts
-index.js
-[postId].js
在我的 [postId]
文件中,我有以下内容
function handler(req, res) {
// shows undefined
console.log(req.params);
const postId = req.params.postId;
我的api调用如下:
fetch(`/api/posts/${id}`)
参考nextJs docs,所有示例均使用req.query
获取id或其他参数:
import { useRouter } from 'next/router'
const Post = () => {
const router = useRouter()
const { pid } = router.query
return <p>Post: {pid}</p>
}
export default Post
所以这种方法没有错。
Nextjs 没有明确说明为什么他们使用 query
而不是 params
,但是在关于 dynamic routes 的部分中你可以得到一些线索:
the route /post/abc?foo=bar will have the following query object:
{ "foo": "bar", "pid": "abc" }
可能他们使用查询作为一种在一个对象中加入参数和查询的方式,或者使用这种方式更方便,因为没有关于它的参考,你不必太在意,只需使用查询并开心。