register method
Registers all service routes in HTTP endpoint.
Implementation
@override
void register() {
var controller =
dependencyResolver.getOneRequired<ICommandable>('controller');
_commandSet = controller.getCommandSet();
var commands = _commandSet?.getCommands() ?? [];
for (var index = 0; index < commands.length; index++) {
var command = commands[index];
var route = command.getName();
route = route[0] != '/' ? '/' + route : route;
registerRoute('post', route, null, (Request req) async {
var params = {};
if (req.headers['Content-Type'] != null && req.headers.isNotEmpty) {
var body = await req.readAsString();
params = body.isNotEmpty ? json.decode(body) : {};
req = req.change(body: body);
}
var correlationId = getCorrelationId(req);
var args = Parameters.fromValue(params);
var timing = instrument(
correlationId, (baseRoute ?? '') + '.' + command.getName());
try {
var result = await command.execute(correlationId, args);
timing.endTiming();
return await sendResult(req, result);
} catch (err) {
instrumentError(
correlationId, (baseRoute ?? '') + '.' + command.getName(), err);
return await sendError(req, ApplicationException().wrap(err));
}
});
}
if (swaggerAuto) {
var swaggerConfig = config!.getSection('swagger');
var doc =
CommandableSwaggerDocument(baseRoute ?? '', swaggerConfig, commands);
registerOpenApiSpec_(doc.toString());
}
}