Skip to content

Turn your Elixir module into an HTTP microservice API

License

Notifications You must be signed in to change notification settings

codedge-llc/mapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Coverage Status Hex.pm

mapi

Turn your Elixir module into an HTTP microservice API

Supports HTTP/1.1 and HTTP/2. Very much a work in progress.

Installation

  1. Add mapi to your list of dependencies in mix.exs:
def deps do
  [
    {:mapi, "~> 0.3.0"}
  ]
end
  1. Configure your endpoints in config.exs
config :mapi, endpoints: [
  {YourModule, [port: 4002]}
]

Usage

Set up an example server for the String module with JSON responses.

# config.exs
config :mapi, endpoints: [
  {String, [port: 4002, type: :json]}
]

Once configured, call your server as if you were calling the function. Mapi supports both HTTP/1.1 and HTTP/2.

$ curl localhost:4002/upcase?q1="testing"
"TESTING"

URL params are applied to the function in alphabetical order without respect to the parameter names themselves. Use parameter names such as q1, q2, .... Parameters are strings, but will be cast to integers, atoms, and booleans if applicable. All other types are not yet supported.

Currently only GET requests are supported.

Responses

Mapi currently supports the following response types:

  • Plaintext
  • JSON
  • Erlang ETF

Configure them with a :type option of either :text, :json, or :etf, respectively. If not specified, Mapi will default to plaintext.

All valid requests give a response of 200 status. Invalid paths will return 404. Valid paths with an incorrect number of parameters will return 400, and all other errors will return 500.

Roadmap TODO

  • Configurable support for HTTP methods other than GET
  • Body parameter decoding (for non-GET requests)
  • Configurable endpoint webserver
  • Support for nested paths, custom routing, etc

About

Turn your Elixir module into an HTTP microservice API

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages