Routing
Style 1 — Decorators
import { Controller, Get, Post, AdminOnly, ResultMapper } from '@soapjs/soap-express';
@Controller('/comics')
export class ComicsController {
constructor(@Inject(ListComicsUseCase.Token) private readonly listComics: ListComicsUseCase) {}
@Get('/')
async list(req: Request, res: Response): Promise<void> {
const result = await this.listComics.execute({ publisher: req.query.publisher as string });
ResultMapper.toResponse(result, res);
}
@Post('/')
@AdminOnly()
async create(req: Request, res: Response): Promise<void> { /* ... */ }
}
await bootstrap({ controllers: [ComicsController], container });Style 2 — Fluent Router
Pure handlers with use cases
RouteIO — request/response transformation
Response handling (consistent across both styles)
Last updated