Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

wessenhizer/rest

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fork docs

This version with using params in GET request.

Use branch params for get this rest version. This branch begins from 5.10 tag original package.

Updated get method looks like:

get(Params) -> ets:tab2list(users).
get(Id, Params) -> [User] = ets:lookup(users, wf:to_list(Id)), User.

Docs from original:

REST: framework with typed JSON

Actions Status Build Status Hex pm

Features and Goals

  • Fastest possibe Record <-> Proplists transformations
  • Smallest REST framework in the world
  • ETS/KVS/Any storage selection by scaffolding

We've achived first goal by providing parse_transform code generation for tuple transformations. And second requirement was achieved by not including routing bullshit and other uncertain features.

Usage

Just plug REST endpoint directly to your Cowboy router:

{"/rest/:resource", rest_cowboy, []},
{"/rest/:resource/:id", rest_cowboy, []},

Module

Sample REST service implementation:

-module(users).
-behaviour(rest).
-compile({parse_transform, rest}).
-include("users.hrl").
-export([init/0, populate/1, exists/1, get/0, get/1, post/1, delete/1]).
-rest_record(user).

init() -> ets:new(users, [public, named_table, {keypos, #user.id}]).
populate(Users) -> ets:insert(users, Users).
exists(Id) -> ets:member(users, wf:to_list(Id)).
get() -> ets:tab2list(users).
get(Id) -> [User] = ets:lookup(users, wf:to_list(Id)), User.
delete(Id) -> ets:delete(users, wf:to_list(Id)).
post(#user{} = User) -> ets:insert(users, User);
post(Data) -> post(from_json(Data, #user{})).

Usage

$ curl -i -X POST -d "id=vlad" localhost:8005/rest/users
$ curl -i -X POST -d "id=doxtop" localhost:8005/rest/users
$ curl -i -X GET localhost:8005/rest/users
$ curl -i -X PUT -d "id=5HT" localhost:8005/rest/users/vlad
$ curl -i -X GET localhost:8005/rest/users/5HT
$ curl -i -X DELETE localhost:8005/rest/users/5HT

Credits

  • Dmitry Bushmelev — ETS
  • Maxim Sokhatsky — KVS

OM A HUM

About

☕ REST: Yoctoframework — https://rest.n2o.dev

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Erlang 69.5%
  • HTML 26.9%
  • Elixir 3.6%