README
Instruction
Installation
install typescript, express & @cbto/resthelper latest version:
npm i --save-dev @cbto/rest-helper express typescript
create file tsconfig.json
tsc --init
init entry file server.ts and put these code inside:
import { moduleCollector } from "@cbto/rest-helper";
import express from "express";
import bodyParser from "body-parser";
// first configuration
const app = express();
// put your middlewares here
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));
// parse application/json
app.use(bodyParser.json());
// register routes
moduleCollector.getRegisteredModule().forEach((module) => {
module.registerEndpoints(app);
});
// start your server with custom port
app.listen(2002, (err) => {
if (err) {
console.log(err);
}
});
And then start the server with
ts-node server
or
node_modules/.bin/ts-node server
install ts-node incase you dont have it:
npm install -g ts-node
Module and routes
enable decorator
{
"compilerOptions": {
// ...
"experimentalDecorators": true
/* Basic Options */
// ...
}
}
create controller ./trello/controllers/task.controller.ts:
import { restGet, BaseController } from "@cbto/rest-helper";
export class TaskController extends BaseController {
@restGet("/randomNumber")
public randomNumber() {
return {
result: Math.round(Math.random() * 10),
};
}
}
register controller to module ./trello/index.ts and import module to the entry file:
import { TaskController } from "./controllers/task.controller";
import { module, BaseModule } from "@cbto/rest-helper";
@module("trello")
export class TrelloModule extends BaseModule {
protected getAllEndpoints() {
// register controllers to module here
const controllers = [TaskController];
return this.getEndpointsOfControllers(controllers);
}
}
edit file server.ts:
import "./trello"; // <<----
import { moduleCollector } from "@cbto/rest-helper";
import express from "express";
// ...
get param and body from request:
@restPost('/trello/tasks/:taskId/finish')
public finishTask(taskId: string, body: any): number {
logDebug(`Finishing task ${taskId}`);
logDebug(`Body: ${JSON.stringify(body)}`);
return 1;
}
@restPost('/trello/tasks/:taskId/reject')
public rejectTask(taskId: string, body: any): number {
logDebug(`Rejecting task ${taskId}`);
logDebug(`Body: ${JSON.stringify(body)}`);
return 0;
}
Load and use configuration
If your configuration file is located at the root folder default.json, you can use loadJsonConfig, and useJsonConfig can be called any where in your project once your config file has been loaded:
import { loadJsonConfig, useJsonConfig } from "@cbto/rest-helper";
///...
const fileConfig1 = "default";
//const fileConfig2 = 'default.dev';
//const fileConfig3 = 'dev/default';
loadJsonConfig(fileConfig1).then(() => {
// START the server
const port = useJsonConfig("server.port");
app.listen(port, () => {
//...
});
});