กล่องพิมพ์ h3
v0.6.0
การตรวจสอบสคีมา JSON สำหรับ h3 โดยใช้ typebox & 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 )
ดูวิธีกำหนดสคีมาของคุณด้วยเอกสาร Type
บน TypeBox
คุณสามารถกำหนดวัตถุตัวเลือกบน validateBody
หรือ validateQuery
ปัจจุบันรองรับตัวเลือกต่อไปนี้:
includeAjvFormats: Boolean
รูปแบบบางอย่าง เช่น date
date-time
หรือ email
ระบุไว้ในร่าง JSONSchema ปัจจุบัน แต่ไม่รวมอยู่ใน ajv ตามค่าเริ่มต้น แต่ระบุไว้ในแพ็คเกจ ajv-formats
หากจำเป็นต้องใช้รูปแบบใดรูปแบบหนึ่งเหล่านี้ คุณสามารถระบุ includeAjvFormats: true
ในตัวเลือกของ validateBody
หรือ validateQuery
ดังนี้:
// 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