0.1.0 • Published 6 years ago

tsyringe-express v0.1.0

Weekly downloads
-
License
MIT
Repository
bitbucket
Last release
6 years ago

Tsyringe Express Decorators

This package provide some simple decorators to declare ExpressJs controller classes and resolve controllers dependencies with Microsoft Tsyringe dependency injection container.

Dependencies

the package reflect-metadata should be imported in the project entrypoint.

Example

import "reflect-metadata";
import { Controller, Action, HttpMethod, attachController } from "tsyringe-express";
import { container, injectable } from "tsyringe";
import * as express from "express";

/**
 * Simple class that provide html to controller
 */
class HtmlProvider {

    public getHtml(): string {
        return "<html><body><h1>It works!</h1></body></html>";
    }

}

/**
 * Simple controller, that listen on route '/examples'
 * Depends on HtmlProvider to render html
 */
@Controller({ route: "/examples" })
@injectable()
class ExampleController {

    /**
     * Constructor with dependencies
     */
    constructor(private htmlProvider: HtmlProvider) {}
    
    /**
     * itworks action, listen on route '/examples/itworks'
     * Should have express Request and Response as parameters
     */
    @Action({
        route: "/itworks",
        method: HttpMethod.GET,
        middlewares: [
            function (req, res, next) {
                console.log("Middleware activated!");
                next();
            }
        ]
    })
    public itWorksAction(req: express.Request, res: express.Response) {
        res.status(200).send( this.htmlProvider.getHtml());
    }
}

const app = express();
attachController(app, container, [ ExampleController ]);

app.listen(3000);
0.1.0

6 years ago

0.0.2

6 years ago

0.0.1

6 years ago