lambert-server
TypeScript icon, indicating that this package has built-in type declarations

1.2.12 • Public • Published

Lambert-server

An express.js Route Handler

Installation

npm i lambert-server

Usage

ES5 Import

const { Server, HTTPError } = require("lambert-server");

or ES6 Import

import { Server, HTTPError } from "lambert-server"

Server

Server options:

const server = new Server({
	port        : number  = 8080;       // the port to listen on
	host        : string  = "0.0.0.0";  // the interface to listen on
	production  : boolean = false;      // enable in production mode - this will hide internal server errors
	serverInitLogging: boolean = true; // allows the server to log informations at startup, errors are excluded from this option
	errorHandler: (err: Error, req: Request, res: Response, next: NextFunction) => void // Default error handler displays JSON errors
})

To access the express app manually use server.app

Register Routes

server.registerRoutes(root: string): Promise<any[]>; // root is the root directory of all routes

The HTTP API path is generated automatically based on the folder structure, so it is important that you name your files accordingly.

Body checking

JSON body can be checked with a schema, that you pass to the check function. A Schema is a Object Structure with key-value objects that checks if the key is an instance of the value (class). You can specify optional parameters if you prefix the key with a $ e.g.: { $captcha: String }, this will make the captcha property in the body optional.

import { check } from "lambert-server";
const SCHEMA = { username: String, age: Number, $posts: [{ title: String }] }
app.post("/", check(SCHEMA), (req, res) => {});

Examples

Example Server

In /index.js

import { Server } from "lambert-server";
// const { Server } = require("lambert-server");

async function main() {
	const server = new Server();
	await server.registerRoutes(__dirname + "/routes/");
	await server.start();
}

main().catch(console.error)

Example Route

In /routes/index.js

import { Router } from "express";
import { HTTPError, check } from "lambert-server";
// const { Router } = require("express")
// const { HTTPError, check } = require("lambert-server")

const router = Router();

router.get("/", (req, res) => {
	res.send("Hello World");
});

router.get("/test", (req, res) => {
	throw new HTTPError("You don't have access to this ressource", 401);
});
 
// JSON body parser
router.post("/", check({ username: String, age: Number, $posts: [{ title: String }] }), (req, res) => {});

export default router;
// module.exports = router

Package Sidebar

Install

npm i lambert-server

Weekly Downloads

160

Version

1.2.12

License

ISC

Unpacked Size

56.9 kB

Total Files

41

Last publish

Collaborators

  • flam3rboy
  • samuelscheit