Overview
Hono provides built-in validation middleware to validate and transform incoming request data. Thevalidator middleware can validate various parts of the request including JSON body, form data, query parameters, path parameters, headers, and cookies.
The Validator Middleware
The validator middleware is a flexible system for validating request data: Fromsrc/validator/validator.ts:46-88:
Validation Targets
The validator can validate different parts of the request:json- Request body as JSONform- Form data (multipart or urlencoded)query- Query string parametersparam- Path parametersheader- Request headerscookie- Request cookies
src/validator/validator.ts:9-12:
GET and HEAD requests cannot validate
json or form targets since these methods must not have a body.Basic Usage
Validating JSON Body
Validating Query Parameters
Validating Path Parameters
Validating Form Data
Validation Function
The validation function receives the extracted value and the context: Fromsrc/validator/validator.ts:14-22:
Synchronous Validation
Asynchronous Validation
Error Handling
Returning Error Responses
Return a Response object to short-circuit the request:src/validator/validator.ts:162-170:
Throwing HTTPException
Malformed Data Errors
The validator automatically handles malformed data: Fromsrc/validator/validator.ts:94-103:
Integration with Validation Libraries
Using Zod
Zod Validator Helper
Multiple Validators
Chain multiple validators for different targets:Validation Target Implementation
Fromsrc/validator/validator.ts:89-160, the validator extracts data based on target:
Form Data Handling
Form data supports both multipart and urlencoded formats: Fromsrc/validator/validator.ts:105-142:
Form Arrays
Type Safety
Validators provide full type safety:Accessing Validated Data
Access validated data usingc.req.valid():
Custom Validators
Create reusable validator functions:Best Practices
Validation Patterns
Pagination Validation
Conditional Validation
Related
- Handlers - Learn about request handlers
- Middleware - Understand middleware execution
- Context - Access request and response data