Skip to content

🚥 A custom Swagger interpreter with AWS Lambda integration support, for local API Gateway testing

License

Notifications You must be signed in to change notification settings

javascript-studio/studio-gateway

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Studio Gateway

A custom Swagger server and compiler with AWS Lambda and mock integration, for local API Gateway testing.

Features

  • Request parameters, header & query mappings
  • Request body models
  • Request-/Response Velocity templates and JSON Path queries
  • Response mappings with regular expressions
  • Response headers
  • AWS Lambda integration
  • AWS Mock integration
  • Swagger $ref to external files - compiles to single AWS compatible file

Usage

Assuming a swagger.json file in the current directory:

const Gateway = require('@studio/gateway');
const Lambda = require('@studio/lambda');

const lambda = Lambda.create();
const gateway = Gateway.create();
gateway.on('lambda', lambda.invoke);
gateway.listen(1337);

API

  • gateway = Gateway.create([options]): Returns a new gateway server for the given options.
    • swagger_file: The swagger file to read. Defaults to swagger.json.
    • swagger_env: The dotenv config to read.
    • stage: The stage name to use. Defaults to "local".
    • stageVariables: The stage variables to use. Default to an empty object.
  • gateway.listen(port[, callback]): Bind the server to the given port.

Events

  • lambda(name, event, context, callback): When a Lambda integration should be invoked. See @studio/lambda for a custom Lambda execution environment.

Swagger command

This module ships with a swagger command to compile a swagger.json file with references to other files into a single AWS compatible file.

Use in npm scripts like this:

{
  "scripts": {
    "swagger:prod": "swagger -o target/swagger-prod.json"
  }
}

The swagger optionally loads the dotenv module and replaces environment ${variables}.

These options are supported:

  • -f, --file: Sets the name of the swagger file. Defaults to swagger.json.
  • -e, --env: Sets the path to a dotenv config file.
  • -o, --outfile: Defines the output file to write to. If not specified, the result is printed to standard out.

Note that all environment variables can be used. When using npm scripts as shown above, you can also do things like ${npm_package_version}.

About

🚥 A custom Swagger interpreter with AWS Lambda integration support, for local API Gateway testing

Resources

License

Stars

Watchers

Forks

Packages

No packages published