- Notifications
You must be signed in to change notification settings - Fork72
Lightweight, blazing fast, cross-platform OpenAPI 3 mock server with validation
License
danielgtaylor/apisprout
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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 fromschema
- Uses operation
- Load from a URL or local file (auto reload with
--watch
) - CORS headers enabled by default
- Accept header content negotiation
- Example:
Accept: application/*
- Example:
- Prefer header to select response to test specific cases
- Example:
Prefer: status=409
- Example:
- 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
- Files (
Usage is simple:
# Load from a local fileapisprout my-api.yaml# Validate server name and use base pathapisprout --validate-server my-api.yaml# Dynamically Include a new server / path in the validationapisprout --add-server http://localhost:8080/mock --validate-server my-api.yaml# Load from a URLapisprout https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/api-with-examples.yaml
A hostedAPI Sprout Docker image is provided that makes it easy to deploy mock servers or run locally. For example:
docker pull danielgtaylor/apisproutdocker run -p 8000:8000 danielgtaylor/apisprout http://example.com/my-api.yaml
Configuration can be passed via environment variables, e.g. settingSPROUT_VALIDATE_REQUEST=1
, or by passing commandline flags. It is also possible to use a local API description file viaDocker Volumes:
# Remember to put the full path to local archive YAML in -vdocker run -p 8000:8000 -v $FULLPATH/localfile.yaml:/api.yaml danielgtaylor/apisprout /api.yaml
Download the appropriate binary from thereleases page.
Alternatively, you can usego get
:
go get github.com/danielgtaylor/apisprout
If your API spec is loaded from a remote URL, you can live-reload it by hitting the/__reload
endpoint.
A simple endpoint which returns status code200
is available at/__health
. This endpoint successfully returns200
even if--validate-server
is turned on, and the endpoint is being accessed from a non-validated host.
Contributions are very welcome. Please open a tracking issue or pull request and we can work to get things merged in.
The following describes the steps to make a new release of API Sprout.
- Merge open PRs you want to release.
- Select a new semver version number (major/minor/patch depending on changes).
- Update
CHANGELOG.md
to describe changes. - Create a commit for the release.
- Tag the commit with
git tag -a -m 'Tagging x.y.z release' vx.y.z
. - Build release binaries with
./release.sh
. - Push the commit and tags.
- Upload the release binaries.
Copyright © 2018-2019 Daniel G. Taylor
About
Lightweight, blazing fast, cross-platform OpenAPI 3 mock server with validation
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors11
Uh oh!
There was an error while loading.Please reload this page.