Skip to content

sakno/go2rest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go2rest exposes any existing command-line program as REST service.

Features

  • 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

How to build

  1. Install Go compiler according to your Operating System
  2. Run go get github.com/sakno/go2rest
  3. Run go build github.com/sakno/go2rest
  4. Grab compiled executable from your current directory

How to use

  1. 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.
  2. 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.

Room for improvements

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:

  1. Multipart form data
  2. Includes, Libraries, Overlays, and Extensions

About

Exposes any command-line program as REST service

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published