Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

rest-api-express-server

projetos-publicos11.5kISC1.0.31TypeScript support: included

Lightweight Express abstraction to work easily with Rest APIs.

rest, api, express, http server

readme

Rest API Express Server

A simple and powerful library for building RESTful APIs using Express.js, designed to streamline the development process and provide a structure similar to Spring/Quarkus in Java. This library is built with TypeScript, offering type safety and improved developer experience.

Features

  • Easy Setup: Quickly create RESTful APIs with minimal configuration.
  • TypeScript Support: Enjoy the benefits of static typing and enhanced code quality.
  • Modular Design: Organize your endpoints into classes for better maintainability as REST Controllers.
  • Middleware Integration: You can still access Express.js instance for middleware configuration. Be it for authentication, logging, and more.
  • Error Handling: Built-in error handling to simplify debugging and improve API reliability.
  • Similar to Spring/Quarkus: Designed to provide a familiar structure for Java developers transitioning to Node.js.

Quickstart

First you need a server and then you need a RestController to register itself on it. Then you can start configuring your endpoints!

class TestRest extends RestController {
    constructor(server: RestAPIServer) {
        super(server, [
            new RestEndpoint(HTTPMethodEnum.GET, '/', (req) => this.helloWorld1(req), [], ['test']),
            new RestEndpoint(HTTPMethodEnum.GET, '/:id', (req) => this.helloWorld2(req), ['id'], []),
            new RestEndpoint(HTTPMethodEnum.GET, '/:id/hello', (req) => this.helloWorld3(req), ['id'], [])
        ]);
    }

    public helloWorld1(req: HTTPSimpleRequest<void>): HTTPSimpleResponse<string> {
        return new HTTPSimpleResponse(`Hello World! test: ${req.getQueryParam('test')}`, HTTPStatusEnum.OK.getCode(), undefined, true);
    }

    public helloWorld2(req: HTTPSimpleRequest<void>): HTTPSimpleResponse<string> {
        return new HTTPSimpleResponse(`Hello World! id: ${req.getPathParam('id')}`, HTTPStatusEnum.OK.getCode(), undefined, true);
    }

    public helloWorld3(req: HTTPSimpleRequest<void>): HTTPSimpleResponse<string> {
        return new HTTPSimpleResponse(`Hello World! id: ${req.getPathParam('id')}`, HTTPStatusEnum.OK.getCode(), undefined, true);
    }
}

let server: RestAPIServer = new RestAPIServer(8080);
let testRest: TestRest = new TestRest(server);
server.serve();