Open2

H3 & Valibot で getValidatedQuery, getValidatedRouterParams, readValidatedBody を使用する

coedocoedo

getQuery 等の代わりに使用するとサーバーサイドのバリデーションが簡潔になる
https://h3.unjs.io/examples/validate-data

Valibot の parse がそのままでは使用できないので、 parser を使用する

server/api/foo.ts
import * as v from 'valibot'

const MySchema = v.object({
  foo: v.pipe(
    v.string(),
    v.minLength(1),
  ),
  bar: v.pipe(
    v.string(),
    v.minLength(1),
  ),
})

export default defineEventHandler(async (event) => {
  // const query = getQuery(event)
  const query = await getValidatedQuery(event, v.parser(MySchema))
  // valid data or throw 400 Validation Error
  return { query }
})