Building REST Server with Elixir
I always wanted to try Elixir because of it’s nice Erlang ecosystem and because it’s similar to Go in a lot of points. I was thinking what I can start with, and I decided to build, yes… a REST server. It took me around 1 hour to install Elixir, and build a simple REST server using maru RESTful framework.
I built a small
items API using JSON and Agent as storage. Let me go through all actions to build.
You should only install Elixir, if you’re using brew:
brew install elixir.
Create new Mix project
Mix is installed together with Elixir, so you just need to run one command to create a project, Mix will create all initial files for you: config, deps, lib, tests, README.
mix new elixirrest
As we decided to use
maru package, we have to add it to
To get and compile dependencies you have to run this command in
mix do deps.get, compile
Mix created a file
config/config.exs, where we can put all configuration we need, for different environments you can create a separate file, but in our example let’s have only one with port
I created a folder
lib/elixirrest with 2 files:
agent.ex. In the first we will define our API, and second will be used for as storage worker.
API contains only 2 endpoints: GET to list all items and POST to create new item, they use Agent as storage.
To start Agent we just add it to supervision tree in
Run and Test
Run this command in
iex -S mix
If you don’t see any errors you can test API endpoints:
curl -XPOST -d "name=test" http://localhost:3030/items curl http://localhost:3030/items
I pushed project into this repository in case you want to check or contribute.