@brandondunc/typescript-rest
v3.0.7
Published
A Library to create RESTFul APIs with Typescript, forked from typscript-rest
Downloads
29,462
Maintainers
Readme
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
Preface
This repository was forked in August 2022 to address critical security updates since the last official typescript-rest release for those still using the library.
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.