Skip to content
/ orbty Public

Simple and high performance web server structure for building scalable, practical and fast server applications

Notifications You must be signed in to change notification settings

hubr-lab/orbty

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

orbty

Simple and high performance web server structure for building scalable, practical and fast server applications.

const Orbty = require("orbty");
orbty = new Orbty();

orbty.get("/welcome", ({ query }) => {
  return { hello: "world" };
});

orbty.listen(8080)

Installation

Installation is easy with the npm command

$ npm install orbty

Current features

  • High test coverage.
  • Middlewares support.
  • Compatible with Typescript.
  • Compatible with express middleware.
  • Automatic HTTP error handler.
  • Integrated body-parser.
  • Dynamic url.
  • High performance.
  • Static files.
  • Support routing by instance.
  • Compatible with your native server. (HTTP, HTTPS).

Examples

Define how the data will be sent in the response.

Basic

// use simple function return
orbty.post("/post/:id", Orbty.json(), ({ body, params }) => {
  return {
    id: params.id,
    content: body.content
  };
});

// use response
orbty.post("/post/:id", (req, res) => {
  res.json({
    id: req.params.id,
    content: req.body.content
  });
});

Errors

Orbty gives you the possibility to treat errors as you see fit. We recommend using the HttpException:

orbty.get("/", (req, res) => {
  throw new Orbty.HttpException("Message error");
});

Set HTTP response status:

orbty.get("/posts/:id", ({ params }) => {
  if (params.id === "1") {
    return "found";
  }

  throw new Orbty.HttpException("Post not found", 404);
});

Create your own errors with your own status codes. Set code attribute with HTTP status:

class NotFound extends Orbty.HttpException {
  constructor(message) {
    super(message, 404);
  }
}

Use:

orbty.get("/posts/:id", ({ params }) => {
  if (params.id === "1") {
    return "found";
  }

  throw new NotFound("Post not found");
});

Or use single response:

orbty.get("/posts/:id", ({ params }, res) => {
  if (params.id === "1") {
    return "found";
  }

  res.status(404).send("Post not found");
});

Capture error handlers:

orbty.error((error, req, res) => {
  console.error(error);
});

Middlewares

Orbty is compatible with all your favorite express middleware and the syntax is the same. We decided to keep the same syntax for its familiarity and simplicity.

const Orbty = require("orbty");
const middleware = require("my-middleware");

const orbty = new Orbty();

orbty.use(middleware);

// ...

The body-parser middleware already integrated with Orbty.

const Orbty = require("orbty");
const orbty = new Orbty();

orbty.post("/posts", Orbty.json({ extended: true }), ({ body }) => {
  return body;
});

orbty.post("/posts/comment", Orbty.text(), ({ body }) => {
  return body;
});

// ...

Static files

Send static files through your api. Orbty contains a middleware that solves this easily:

const Orbty = require("orbty");
const orbty = new Orbty();

orbty.use(Orbty.static(`${__dirname}/media`));
orbty.use(Orbty.static(`${__dirname}/photos`));

// ...

Cache

We currently have a separate Cache management module for Orbty and also compatible with Express. Check orbty-http-cache.

Orbty instancies

An Orbty instance acts as a router.

const Orbty = require("orbty");

const orbty = new Orbty();
const orbtyV2 = new Orbty();

orbtyV2.get("/", () => "This is v2 API");

orbty.use("/v2", orbtyV2);

Https

Use Orbty with https and others http protocols:

const https = require("https");
const Orbty = require("orbty");
const fs = require("fs");

const orbty = new Orbty();

orbty.get("/", () => {
  return "this secure server";
})

// Node JS native documentation
const options = {
  key: fs.readFileSync("secury.pem"),
  cert: fs.readFileSync("secury-cert.cert")
};

https.createServer(options, orbty.server()).listen(443);

TODO

  • Improve documentations on external page
  • Improve stream

About

Simple and high performance web server structure for building scalable, practical and fast server applications

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published