Wondering what’s next for npm?Check out our public roadmap! »

    typescript-rest
    TypeScript icon, indicating that this package has built-in type declarations

    3.0.4 • Public • Published

    npm version Master Workflow Coverage Status Known Vulnerabilities BCH compliance

    REST Services for Typescript

    This is a lightweight annotation-based expressjs extension for typescript.

    It can be used to define your APIs using decorators.

    Table of Contents

    Installation

    This library only works with typescript. Ensure it is installed:

    npm install typescript -g

    To install typescript-rest:

    npm install typescript-rest --save

    Configuration

    Typescript-rest requires the following TypeScript compilation options in your tsconfig.json file:

    {
      "compilerOptions": {
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "target": "es6" // or anything newer like esnext
      }
    }

    Basic Usage

    import * as express from "express";
    import {Server, Path, GET, PathParam} from "typescript-rest";
    
    @Path("/hello")
    class HelloService {
      @Path(":name")
      @GET
      sayHello( @PathParam('name') name: string ): string {
        return "Hello " + name;
      }
    }
    
    let app: express.Application = express();
    Server.buildServices(app);
    
    app.listen(3000, function() {
      console.log('Rest Server listening on port 3000!');
    });

    That's it. You can just call now:

    GET http://localhost:3000/hello/joe
    

    Using with an IoC Container

    Install the IoC container and the serviceFactory for the IoC Container

    npm install typescript-rest --save
    npm install typescript-ioc --save
    npm install typescript-rest-ioc --save

    Then add a rest.config file in the root of your project:

    {
      "serviceFactory": "typescript-rest-ioc"
    }

    And you can use Injections, Request scopes and all the features of the IoC Container. It is possible to use it with any other IoC Container, like Inversify.

    Example:

    class HelloService {
      sayHello(name: string) {
        return "Hello " + name;
      }
    }
    
    @Path("/hello")
    class HelloRestService {
      @Inject
      private helloService: HelloService;
    
      @Path(":name")
      @GET
      sayHello( @PathParam('name') name: string): string {
        return this.sayHello(name);
      }
    }

    Complete Guide

    Check our documentation.

    Boilerplate Project

    You can check this project to get started.

    Install

    npm i typescript-rest

    DownloadsWeekly Downloads

    16,324

    Version

    3.0.4

    License

    MIT

    Unpacked Size

    1.03 MB

    Total Files

    91

    Last publish

    Collaborators

    • avatar