h3タイプボックス
v0.6.0
typebox と ajv を使用した h3 の JSON スキーマ検証。
# 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 )
Type
使用してスキーマを定義する方法については、TypeBox ドキュメントを参照してください。
validateBody
またはvalidateQuery
でオプション オブジェクトを定義できます。現在、次のオプションがサポートされています。
includeAjvFormats: Boolean
date
、 date-time
、 email
などの一部の形式は現在の JSONSchema ドラフトで指定されていますが、デフォルトでは ajv には含まれておらず、 ajv-formats
パッケージによって提供されています。これらの形式のいずれかが必要な場合は、次のようにvalidateBody
またはvalidateQuery
のオプションでincludeAjvFormats: true
を指定できます。
// Body
validateBody ( event , schema , { includeAjvFormats : true } )
// Query
validateQuery ( event , schema , { includeAjvFormats : true } )
現在、パフォーマンスとセキュリティ上の理由から、次の拡張形式のみがサポートされています。
これらは、 Type.Unsafe
メソッドまたはインライン スキーマを使用したカスタム スキーマで使用できます。
const bodySchema = Type . Object ( {
optional : Type . Optional ( Type . String ( ) ) ,
dateTime : Type . String ( { format : 'date-time' } )
} )
validateBody ( event , bodySchema , { includeAjvFormats : true } )
pnpm install
使用して依存関係をインストールするpnpm dev
使用して対話型テストを実行するで作られた?
MITライセンスに基づいて公開されています。