@studio/gateway
v3.0.0
Published
JavaScript Studio Gateway
Downloads
44
Readme
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 toswagger.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 toswagger.json
.-e, --env
: Sets the path to adotenv
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}
.