bloom_validate library
Declarative, strictly-typed request body and DTO validation for Bloom applications.
Provides zero-codegen validation for HTTP request bodies, query params, and JSON payloads with fail-fast error accumulation, built-in validation rules, and direct conversion of validation errors into standard HTTP 400 Bad Request responses.
Example:
import 'package:bloom_server/bloom_server.dart';
import 'package:bloom_validate/bloom_validate.dart';
class SignupRequestSchema extends BloomRequestSchema {
SignupRequestSchema(super.data);
SignupRequestSchema.fromRequest(super.request) : super.fromRequest();
late final String name = requireStringLength('name', min: 2, max: 50, description: 'Full name');
late final String email = requireEmail('email', description: 'User email address');
late final String password = requireStringLength('password', min: 8, max: 128, description: 'Account password');
late final String? referralCode = optionalString('referralCode');
@override
void validate() {
name;
email;
password;
referralCode;
}
}
Future<BloomResponse> handleSignup(BloomRequest request) async {
try {
final schema = BloomRequestSchema.validateSchema(SignupRequestSchema.fromRequest(request));
return BloomResponse.json({
'message': 'User registered successfully',
'email': schema.email,
'name': schema.name,
}, statusCode: 201);
} on BloomValidationException catch (e) {
return e.toResponse();
}
}
Classes
- BloomRequestSchema
- Abstract base class for strictly typed and validated HTTP request body schemas.
Mixins
- BloomValidationRules
- Mixin providing advanced HTTP body and DTO validation rules.
Exceptions / Errors
- BloomValidationException
- Exception thrown when request body or DTO schema validation fails.