go2rest exposes any existing command-line program as REST service.
- Cross-platform. Can run on every platform supported by Go language compiler
- Lightweight. Just one executable file. All dependencies are statically linked
- RAML compatible. You can describe REST API for any command-line program using RAML 1.0 markup language based on YAML. The same RAML file you can use to generate documentation for your REST API using ReadTheDocs or any other toolchain for documentation
- Supports for file transfer through REST API that can be used as input argument for command-line program
- Mapping between process exit statuses and HTTP statuses
- Supported JSON types: number, string, boolean, array
- FastCGI support
- Install Go compiler according to your Operating System
- Run
go get github.com/sakno/go2rest
- Run
go build github.com/sakno/go2rest
- Grab compiled executable from your current directory
- Describe REST API in the form of RAML file with
.raml
extension. Read Wiki for detailed guide of how to write correct RAML file; or look at RAML file used for tests. - Run
go2rest [--port <port>] <path/to/file.raml>
. Now REST service is hosted on specified port
If you want to run service in FastCGI mode then omit port number like this: go2rest <path/to/file.raml>
RAML file should have .raml
extension. go2rest uses file extension to determine correct model parser because, in future, the program may support
another model formats such as OpenAPI.
Internal representation of REST model does not rely on RAML directly. It is possible to implement any descriptive model of API. For example, OpenAPI Spec used by Swagger toolchain.
JSON Object (dictionary) data type is not supported at this moment but can be implemented easily.
Some of RAML features are not supported:
- Multipart form data
- Includes, Libraries, Overlays, and Extensions