Next js - 如何在 url 中为 api 传递多个参数?
Posted
技术标签:
【中文标题】Next js - 如何在 url 中为 api 传递多个参数?【英文标题】:Next js - How to pass multiple parameters in url for api? 【发布时间】:2020-11-24 02:41:04 【问题描述】:我能够传递一个参数并从下一个 js api 获取结果
文档非常有帮助 - https://nextjs.org/docs/api-routes/dynamic-api-routes
/api/posts/[postId].js
上述方法可行,但是否可以选择传递另一个参数,如下所示?
/api/posts/[postId][userId].js
文件夹名称当前为 [postId]。我尝试将其重命名为 [postId][userId]
我的 api 代码是
let postVotes = await req.db.collection('votesPosts').count("post":req.query.postId,"user":req.query.userId)
【问题讨论】:
[postId][userId]
没有分隔符,系统将不知道如何将 url 映射到该路由。
也许[postId]/[userId]
可以做到这一点,您将拥有一个名为[userId]
和index.js
的文件夹,或者只是一个名为[userId].js
的文件,您可以在其中像您一样获取数据跨度>
【参考方案1】:
通常,路由不会处理 URL 路径的单个段中的多个参数。每个段只能有一个参数:
/api/entity/param1/param2/sub/param3
现在在 Next JS 中,您也需要将它们分开以有 2 个带参数的段:
/api/posts/[postId]/[userId]
这将解析为 2 个可能的文件:
/api/posts/postId]/[userId]/index.js
如果你使用参数目录+索引文件,或者
/api/posts/postId]/[userId].js
如果你用参数文件来做。
使用目录 + 索引文件可以添加固定段,例如:
/api/posts/postId]/[userId]/popular.js
/api/posts/postId]/[userId]/private.js
然后,您可以像为 2 个参数所做的那样进行 API 调用。
【讨论】:
你的回答很有道理,所以我必须看看为什么我的第二级 [userId] 给了我 404 但第 1 级有效。可能是下一个 js 想要 [...slug] 或 [...params] 但我必须玩这个 适用于嵌套文件夹结构。谢谢 我认为传播 [...slug] 旨在用于像 javascript 中的无限参数,但在 Next JS 的情况下具有多个段。我并没有真正使用 API 路由,但我在 Next 中经常使用文件系统路由。试着和他们一起玩看看以上是关于Next js - 如何在 url 中为 api 传递多个参数?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Strapi API 引用 Next JS 中的图像组件?
使用 Node.js 服务器为 Next.js 授权 Azure 存储服务 REST API - 从 URL 复制 Blob
如何处理调用 API 的 Next.js 中动态路由的未找到 404?
如何隐藏通过 url 直接访问的 nextjs api 路由?