- DI using inversify
- Custom decoarotors which created by me, for register controllers and handlers.
- Clean Architecture
- 100% Testable
- Exception Filters
- Middlewares
- Custom Http Errors
- Validation Pipes
@Controller('/users')
@injectable()
export default class UsersController implements IUsersController {
constructor(
@inject(TYPES.ILogger) private loggerService: ILogger,
@inject(TYPES.IUserService) private userService: IUserService,
) {}
@Get('/login')
public login(_req: Request, res: Response): void {
throw new HttpError(401, 'ошибка авторизации');
}
@ValidationPipe(UserRegisterDto)
@Post('/register')
public async register(
{ body }: Request<{}, {}, UserRegisterDto>,
res: Response,
_next: NextFunction,
): Promise<void> {
const user = await this.userService.createUser(body);
res.status(201).json(user);
}
}