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

Art*_*nov 13 javascript vue.js nuxt.js nuxtjs3

我正在遵循一个指南,其中api routes构建如下:

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

export default defineEventHandler((event) => {

    return {
        message: `hello api route`
    }
})
Run Code Online (Sandbox Code Playgroud)

2 在组件中使用 api 路由,如下所示:

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

<template>
  <div>
    <p>api data {{ message }}</p>
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

这有效,但是当我尝试添加query parameterin时1.

export default defineEventHandler((event) => {

    const { name } = useQuery(event)

    return {
        message: `hello api name parameter ${name}`
    }
})
Run Code Online (Sandbox Code Playgroud)

并在组件中调用它2.

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

<template>
  <div>
    <p>api data {{ message }}</p>
  </div>
</template>
Run Code Online (Sandbox Code Playgroud)

message房产是空的。似乎useQuery(event)会产生一个空变量。知道为什么这不起作用吗?

nur*_*yad 35

useQuery(event)不再支持。您可以使用getQuery(event)

getQuery 的 h3 文档


小智 14

尝试getQuery代替useQuery

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