Skip to content

beaverusiv/typescript-rest

 
 

Repository files navigation

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.

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 99.2%
  • JavaScript 0.8%