如何从 Nuxt 3 服务器获取路由参数

Posted

技术标签:

【中文标题】如何从 Nuxt 3 服务器获取路由参数【英文标题】:How to get route parameters from Nuxt 3 server 【发布时间】:2021-12-12 05:57:32 【问题描述】:

我有以下 API URL 之一。归根结底,对于我的用例,我必须使用这些 URL 中的哪一个并不重要,但目前都不起作用。

http://localhost:3000/api/track/TRACKID

http://localhost:3000/api/track?id=TRACKID

如何在 API 代码中获得 TRACKID?以下代码生成undefined

export default async (req: IncomingMessage, res: ServerResponse) => 
    console.log(req.id);
;

我尝试通过以下方式为第一个 URL 设置文件,但同样失败。它只是导致 URL 为 http://localhost:3000/api/track/[id]

PROJECT/server/api/track/[id].ts

对于第二个 URL,我使用了以下设置。

PROJECT/server/api/track.ts

【问题讨论】:

您应该尝试通过 Express 使用自定义端点:nuxtjs.org/docs/configuration-glossary/… 也检查一下:dev.to/dabit3/creating-api-routes-in-a-nuxt-app-1kg1 他在 Nuxt 3 上工作吗?您链接的内容似乎集中在 Nuxt 2。 确实如此。试一试。 【参考方案1】:
import * as url from "url";

const params = url.parse(req.url as string, true).query;
const id = params

【讨论】:

欢迎来到 Stack Overflow,感谢您提供答案。您能否编辑您的答案以包括对您的代码的解释?这将有助于未来的读者更好地了解正在发生的事情,尤其是那些刚接触该语言并难以理解概念的社区成员。 这是在 nuxt 3 中执行此操作的“标准”方式吗?我在官方文档上找不到任何东西【参考方案2】:
import  useQuery  from 'h3'
export default (req, res) => 
    const  id  = useQuery(req)

https://github.com/unjs/h3 是将 api 放在一起的服务器。

【讨论】:

以上是关于如何从 Nuxt 3 服务器获取路由参数的主要内容,如果未能解决你的问题,请参考以下文章

如何生成带有目标的路由:Nuxt 中的服务器渲染?

nuxt.js服务端渲染中如何实现路由的跳转

如何在 Vue.js - Nuxt - TypeScript 应用程序中访问路由参数?

如何使用 vue 路由器将道具传递到 nuxt 错误页面?

仅使用 Nuxt 进行服务器端渲染一页

Nuxt.js服务端渲染实践,从开发到部署