ORIGINAL REPOSITORY IS https://github.com/danielgtaylor/apisprout .
It is stop to maintained since 2019. But it happens sometimes in open source project because software developer is very busy.
This repository will merging pull request and patch from original repository, and it will evolve on its own. I was created homebrew formula ( https://github.com/TakesxiSximada/homebrew-tap ). You can install it using Homebrew.
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 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
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
Download the appropriate binary from the releases page.
Alternatively, you can use go 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 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.
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