0.4.0 • Published 10 months ago

middy-server v0.4.0

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

Middy Server

Library to create an HTTP server from a Middy http router handler. Instead of deploying your handler to AWS or running locally with SAM, you can wrap it and run it as an http server.

Installing

Using npm:

$ npm install middy-server

Using yarn:

$ yarn add middy-server

Importing

Importing with ESM:

import { middyServer } from "middy-server";

Importing with CJS:

const middyServer = require("middy-server");

Usage

This is designed to wrapp middy handlers that are using the @middy/http-router middleware. For example, take this middy handler:

import middy, { type MiddyfiedHandler } from "@middy/core";
import httpRouterHandler from "@middy/http-router";
import type { Method } from "@middy/http-router";
import type {
  APIGatewayEvent,
  APIGatewayProxyResult,
  Context,
} from "aws-lambda";

const getHandler = middy().handler(
  (event: APIGatewayEvent, context: Context): APIGatewayProxyResult => {
    return {
      statusCode: 200,
      body: '{"hello": "world"}',
    };
  }
);

const postHandler = middy().handler(
  (event: APIGatewayEvent, context: Context): APIGatewayProxyResult => {
    return {
      headers: { "content-type": "application/json" },
      statusCode: 201,
      body: String(event.body),
    };
  }
);

const routes = [
  {
    method: "GET" as Method,
    path: "/test",
    handler: getHandler,
  },
  {
    method: "POST" as Method,
    path: "/test",
    handler: postHandler,
  },
];

export const handler: MiddyfiedHandler = middy().handler(
  httpRouterHandler(routes)
);

To test this as an http server, you can create a new file:

import { middyServer } from "middy-server";
import { handler } from "./middy_handler";

const server = middyServer(handler);
server.listen(3000, "localhost", () => {
  console.log("Server is running on http://localhost:3000");
});

That will start up an http server that will forward requests to your middy handler and convert both the requests and response.

$ curl http://localhost:3000/test
{"hello": "world"}

$ curl -d '{"test" : "123"}' http://localhost:3000/test
{"test" : "123"}

Configuration

This is the available configuration for configuring the server:

{
    // `eventType` is the type of lambda event being used by the Middy router
    // This defaults to APIGatewayProxyEventV2, but can also be set to APIGatewayProxyEvent or ALBEvent
    // This is dependent on what the event source is for your lambda in AWS
    eventType: "APIGatewayProxyEventV2",
}
0.4.0

10 months ago

0.3.0-alpha

10 months ago

0.2.2-alpha

11 months ago

0.2.1-alpha

11 months ago

0.2.0-alpha

11 months ago

0.1.0-alpha

11 months ago