Skip to content

Lightweight, blazing fast, cross-platform OpenAPI 3 mock server with validation

License

Notifications You must be signed in to change notification settings

sixleaveakkm/apisprout-lambda

 
 

Repository files navigation

apisprout-lambda

A fork from apisprout for AWS Lambda.

  • Add swagger file from s3 backend if file name starts with s3://, e.g. s3://foo/bar.yaml
  • Add string env parameter "file" as a fallback of argument parameter
  • Add bool env parameter 'lambda' to run in lambda proxy mode so could be used for API Gateway and ALB (Attribute Multi value headers must be set to Enabled in target group).

Lambda setup

  1. Without swagger file Zip binary file add upload to AWS. Set following environment variables. For SPROUT_FILE set to some accessible location, or use a s3 location as following.
    img.png

  2. With swagger file When making zip file for lambda, add swagger to the zip file. Then you could set SPROUT_FILE to the location.

apisprout

API Sprout

Go Report Card Build Status GitHub tag (latest SemVer) Docker Pulls

A simple, quick, cross-platform API mock server that returns examples specified in an API description document. Features include:

  • OpenAPI 3.x support
    • Uses operation examples or generates examples from schema
  • Load from a URL or local file (auto reload with --watch)
  • CORS headers enabled by default
  • Accept header content negotiation
    • Example: Accept: application/*
  • Prefer header to select response to test specific cases
    • Example: Prefer: status=409
  • Server validation (enabled with --validate-server)
    • Validates scheme, hostname/port, and base path
    • Supports localhost out of the box
    • Use the --add-server flag, in conjunction with --validate-server, to dynamically include more servers in the validation logic
  • Request parameter & body validation (enabled with --validate-request)
  • Configuration via:
    • Files (/etc/apisprout/config.json|yaml)
    • Environment (prefixed with SPROUT_, e.g. SPROUT_VALIDATE_SERVER)
    • Commandline flags

Usage is simple:

# Load from a local file
apisprout my-api.yaml

# Validate server name and use base path
apisprout --validate-server my-api.yaml

# Dynamically Include a new server / path in the validation
apisprout --add-server http://localhost:8080/mock --validate-server my-api.yaml

# Load from a URL
apisprout https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/api-with-examples.yaml

Docker Image

A hosted API Sprout Docker image is provided that makes it easy to deploy mock servers or run locally. For example:

docker pull danielgtaylor/apisprout
docker run -p 8000:8000 danielgtaylor/apisprout http://example.com/my-api.yaml

Configuration can be passed via environment variables, e.g. setting SPROUT_VALIDATE_REQUEST=1, or by passing commandline flags. It is also possible to use a local API description file via Docker Volumes:

# Remember to put the full path to local archive YAML in -v
docker run -p 8000:8000 -v $FULLPATH/localfile.yaml:/api.yaml danielgtaylor/apisprout /api.yaml

Installation

Download the appropriate binary from the releases page.

Alternatively, you can use go get:

go get github.com/danielgtaylor/apisprout

Extra Features

Remote Reload

If your API spec is loaded from a remote URL, you can live-reload it by hitting the /__reload endpoint.

Health Check

A simple endpoint which returns status code 200 is available at /__health. This endpoint successfully returns 200 even if --validate-server is turned on, and the endpoint is being accessed from a non-validated host.

Contributing

Contributions are very welcome. Please open a tracking issue or pull request and we can work to get things merged in.

Release Process

The following describes the steps to make a new release of API Sprout.

  1. Merge open PRs you want to release.
  2. Select a new semver version number (major/minor/patch depending on changes).
  3. Update CHANGELOG.md to describe changes.
  4. Create a commit for the release.
  5. Tag the commit with git tag -a -m 'Tagging x.y.z release' vx.y.z.
  6. Build release binaries with ./release.sh.
  7. Push the commit and tags.
  8. Upload the release binaries.

License

Copyright © 2018-2019 Daniel G. Taylor

http://dgt.mit-license.org/

About

Lightweight, blazing fast, cross-platform OpenAPI 3 mock server with validation

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 97.9%
  • Other 2.1%