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

@mikrokit/serverless v0.2.1-alpha.0

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

@mikrokit/serverless

MikroKit Router is an RPC like router oriented for quick Api development, Ā  it is agnostic about the server or serverless environment it is used on. It could be used on aws lambda, azure functions, Google cloud functions, or any event based environment.

This package contains a collection bindings for different serverless environments.

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