Rest are responsible for handling incoming requests and returning responses to the client requests.
Create a file to src/controllers to create a a rest controller:
src/rests/todos.rest.ts
Create a Rest
import { Rest } from '@heronjs/common';
@Rest('/todos')
export class TodoRest {}A new resource is now available at http://localhost:3000/todos.
Define a Route
Let's assume you need to create a GET method api that get all todos.
import { Rest } from '@heronjs/common';
@Rest('/todos')
export class TodoRest {
@Get({ uri: '/'})
public async findAll(): Promise<TodoModel> {
return ['todo1'];
}
}A new api route is now available at http://localhost:3000/todos with GET method.
Parameter Decorators
| Decorator | Description | Note |
|---|---|---|
@Header(name) | Get header value by name | |
@Param(name) | Get param value by name | |
@Body() | Get body of request | |
@Query(name) | Get a query parameter of request | |
@Queries() | Get all query parameters of request | |
@Request() | Get HttpRequest class | |
@Response() | Get HttpResponse class | Use this decorator when you need to handle the response manually. |
@Principle(name) | Get Auth value | Gatekeeper Auth Value |
@Rest('/todos')
export class TodoRest {
@Get({ uri: '/'})
public async findAll(): Promise<TodoModel> {
return ['todo1'];
}
}Register Rest Routes
Add TodoRest class to @Module({}) controller property to enable the routes
@Module({
controllers: [TodoRest],
})
export class AppModule {}Supported Decorators
| Decorator | Description |
|---|---|
@Get | Get Method |
@Post | Post Method |
@Put | Put Method |
@Patch | Patch Method |
@Delete | Delete Method |
The decorators has 3 arguments uri , code and headers
uri- the uri of the requestcode- the response code (it's 200 by default)headers- accept the object of headers
@Get({
uri: '/api',
code:204,
headers:{'content-type':'application/xml'}
// headers:{'content-type': ()=> Date.now()} a header value can be a function
})