@cbto/rest-helper
v1.2.1
Published
## Installation
Downloads
31
Maintainers
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, () => {
//...
});
});