JSON-Schemavalidierung für h3 mit Typebox und AJV.
# Using npm
npm install h3-typebox
# Using yarn
yarn install h3-typebox
# Using pnpm
pnpm install h3-typebox
import { createServer } from 'http'
import { createApp } from 'h3'
import { validateBody , validateQuery , Type } from 'h3-typebox'
const app = createApp ( )
app . use ( '/' , async ( event ) => {
// Validate body
const body = await validateBody ( event , Type . Object ( {
optional : Type . Optional ( Type . String ( ) ) ,
required : Type . Boolean ( ) ,
} ) )
// Validate query
const query = validateQuery ( event , Type . Object ( {
required : Type . String ( ) ,
} ) )
} )
createServer ( app ) . listen ( process . env . PORT || 3000 )
Erfahren Sie, wie Sie Ihr Schema mit Type
on-TypeBox-Dokumentation definieren.
Sie können ein Optionsobjekt für validateBody
oder validateQuery
definieren. Derzeit werden folgende Optionen unterstützt:
includeAjvFormats: Boolean
Einige Formate wie date
, date-time
oder email
sind im aktuellen JSONSchema-Entwurf angegeben, aber nicht standardmäßig in ajv enthalten, sondern werden vom ajv-formats
-Paket bereitgestellt. Wenn eines dieser Formate benötigt wird, können Sie includeAjvFormats: true
in den Optionen von validateBody
oder validateQuery
wie folgt angeben:
// Body
validateBody ( event , schema , { includeAjvFormats : true } )
// Query
validateQuery ( event , schema , { includeAjvFormats : true } )
Derzeit werden aus Leistungs- und Sicherheitsgründen nur die folgenden erweiterten Formate unterstützt:
Diese können von benutzerdefinierten Schemas mit der Type.Unsafe
-Methode oder mit einem Inline-Schema verwendet werden:
const bodySchema = Type . Object ( {
optional : Type . Optional ( Type . String ( ) ) ,
dateTime : Type . String ( { format : 'date-time' } )
} )
validateBody ( event , bodySchema , { includeAjvFormats : true } )
pnpm install
pnpm dev
durch Hergestellt mit ?
Veröffentlicht unter MIT-Lizenz.