【问题标题】:Next js - How to pass multiple parameters in url for api?Next js - 如何在 url 中为 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 的文件,您可以在其中像您一样获取数据跨度>

标签: javascript reactjs mongodb api next.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 中经常使用文件系统路由。试着和他们一起玩看看
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
  • 2012-06-12
  • 2016-02-20
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 2018-11-07
相关资源
最近更新 更多