1.1.10 • Published 4 days ago

@sameke/expressjs-decorators v1.1.10

Weekly downloads
11
License
MIT
Repository
github
Last release
4 days ago

expressjs-decorators

express decorators

overview

This is a convience library to make creating routes for express REST services cleaner.

getting started

*$ npm install expressjs-decorators


  1. Create models, business logic and any data access classes required

UserService.ts

import {UserRepository} from '../repositories/UserRepository';

export class UserService {
    private _userRepository: UserRepository;

    constructor(userRepository: UserRepository) {
        this._userRepository = userRepository;
    }

    public async getUser(id: number): Promise<User> {
        let user = await this._userRepository.getUser(id);
        return user;
    }
}
  1. Create your REST API

UserController.ts

import {UserService} from '../services/UserService';
import {Response as ExpressResponse} from 'express';
import {Controller, Get, CatchAndSendError, Response, NumParam} from 'expressjs-decorators';

@Controller('/users')
export class UserController {
    private _userService: UserService;

    constructor(userService: UserService) {
        this._userService = userService;
    }

    @CatchAndSendError()
    @Get('/:userId')
    public async getUser(@Response() res: ExpressResponse, @NumParam('userId') id: number): Promise<void> {
        let user = await this._userService.getUser(id);
        res.location(`/api/users/${user.id}`);
        res.json({user: user});
    }
}
  1. Set up dependency injection container and start an HTTP listener

index.ts

import {registerController} from 'expressjs-decorators';
import * as express from 'express';
import {Router} from 'express';
import {UserController} from './controllers/UserController';

// create express application
const app: express.Application = express();

const apiRouter = Router();

let userRepo = new UserRepository();

let userController = new UserController(new UserService(userRepo));

// register controllers
registerController(apiRouter, userController);

app.use('/api', apiRouter);

// run http listener
const server: Server = app.listen(8080, (error: Error) => {
    if (error != null) {
        console.log(error);
    } else {
        console.log('server listening over insecure http on port 8080');
    }
});
  1. You should now have a useable api endpoint at:

    localhost:8080/api/users/id

1.1.9

4 days ago

1.1.10

4 days ago

1.1.8

8 months ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.2

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.3

5 years ago