如何在Nuxt 3中使用useQuery()处理API路由参数?

11

我正在遵循一个指南,其中api路由是这样构建的:

1.创建 server/api/route.js 文件:

export default defineEventHandler((event) => {

    return {
        message: `hello api route`
    }
})

在组件中使用 API 路由的方法如下:

<script setup>
const { data: message } = await useFetch('/api/route')
</script>

<template>
  <div>
    <p>api data {{ message }}</p>
  </div>
</template>

这个方法是可行的,但是当我尝试在1.中添加一个查询参数时出现了问题:

export default defineEventHandler((event) => {

    const { name } = useQuery(event)

    return {
        message: `hello api name parameter ${name}`
    }
})

将其命名并在组件 2 中调用:

<script setup>
const { data: message } = await useFetch('/api/route?name=mario')
</script>

<template>
  <div>
    <p>api data {{ message }}</p>
  </div>
</template>

message属性为空。看起来useQuery(event)生成了一个空变量。有什么想法为什么不起作用?

2个回答

32

useBody(event)也不再受支持。替代方法是readBody(event)。 - undefined

13

尝试使用getQuery而不是useQuery

export default defineEventHandler((event) => {
  const { name } = getQuery(event);
  return {
      message: `hello api name parameter ${name}`,
  };
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接