Validasi & Error
Flowra menyediakan helper validasi dan format response error yang konsisten.
Aturan validasi
Helper validasi berada di app/Config/Validation.js dan mendukung aturan seperti:
requiredminLengthis_emailalpha_numericalpha_numeric_spacevalid_urlvalid_ipis_unique(cektable.column)
Gunakan validationFactory dari container untuk membuat validator di service atau controller:
app/Modules/Users/Users.service.js
const HttpError = require('../../Errors/HttpError');
class UsersService {
constructor({ validationFactory } = {}) {
this.validationFactory = validationFactory;
}
get rules() {
return {
username: { required: true, alpha_numeric: true },
email: { required: true, is_email: true, is_unique: 'users.email' },
password: { required: true, minLength: 8 },
};
}
async create(payload) {
const validator = this.validationFactory(this.rules);
const errors = await validator.validate(payload);
if (errors.length > 0) {
throw new HttpError(422, 'Validation failed', errors);
}
// Persist payload...
}
}
Error handling
Flowra membungkus error dengan HttpError dan mengembalikan response JSON yang konsisten lewat middleware ErrorHandler:
{
"code": "E_HTTP_ERROR",
"statusCode": 500,
"message": "Internal server error",
"details": {
"stack": "..."
},
"timestamp": "2026-02-03T00:00:00.000Z",
"path": "/users/list",
"requestId": "..."
}
Not found
Middleware not-found melempar HttpError(404, ...) agar response konsisten.
Tetap eksplisit
Gunakan HttpError untuk kegagalan yang terduga (validasi, permissions). Biarkan error tak terduga masuk ke handler.