1.2.1 • Published 4 years ago

@cbto/rest-helper v1.2.1

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

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, () => {
    //...
  });
});
1.2.0

4 years ago

1.2.1

4 years ago

1.1.12

4 years ago

1.1.11

4 years ago

1.1.10

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.1.9

4 years ago

1.1.8

4 years ago

1.1.7

4 years ago

1.1.6

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.2

4 years ago

1.0.11

4 years ago

1.0.10

4 years ago

1.0.9

4 years ago

1.0.8

4 years ago

1.0.7

4 years ago

1.0.6

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago