0.2.1-alpha.0 ā€¢ Published 2 years ago

@mikrokit/http v0.2.1-alpha.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

@mikrokit/http

MikroKit router is an RPC like router oriented for quick Api development, it is agnostic about the environment it is used on. It could be used on serverless environments, or as an standalone http server.

MikroKit Server is well suited a very specific scenario, that is Apis that works with json data only. In return it offers quick development, fast execution and a Lightweight router šŸš€.

This is a limited http server, only supports application/json content type, does not support multipart/form-data, no websocket or streams and no file upload neither. There are better alternatives for those scenarios (like S3 file upload, etc).

RPC like router

MikroKit router uses a Remote Procedure Call style routing, unlike traditional routers it does not use GET, PUT, POST and DELETE methods, everything is transmitted using HTTP POST method and all data is sent/received in the request/response body and headers.

Requests & Responses

  • Requests are made using only HTTP POST method.
  • Data is sent and received only in the body and headers.
  • Data is sent and received only in JSON format.

Routing

šŸš€ Lightweight router based in plain javascript objects.

Thanks to it's RPC style there is no need to parse parameters or regular expressions when finding a route. Just a simple Map in memory containing all the routes.

Route parameters are passed as an array in the request body, in a field with the same name as the route. Elements in the array must have the same order as the function parameters.

Route response is send back in the body in a field with the same name as the route.

The reason for this weird naming is to future proof the router to be able to accept multiple routes on a single request. However this can be changed setting the routeFieldName in the router options.

šŸ“‹ Please read full router documentation here!

// ../router/examples/routes-definition.routes.ts

import {Route, Handler, Routes, MkRouter} from '@mikrokit/router';

const sayHello: Handler = (context, name: string): string => {
  return `Hello ${name}.`;
};

const sayHello2: Route = {
  route(context, name1: string, name2: string): string {
    return `Hello ${name1} and ${name2}.`;
  },
};

const routes: Routes = {
  sayHello, // api/sayHello
  sayHello2, // api/sayHello2
};

MkRouter.setRouterOptions({prefix: 'api/'});
MkRouter.addRoutes(routes);

MIT LICENSE