mirror https://github.com/synrc/rest
![]() |
1 год назад | |
---|---|---|
src | 1 год назад | |
.gitignore | 1 год назад | |
LICENSE | 11 лет назад | |
Makefile | 1 год назад | |
README.md | 1 год назад | |
erlang.mk | 1 год назад | |
mix.exs | 10 лет назад |
Just plug REST endpoint directly to your Cowboy router:
{"/rest/:resource", rest_cowboy, []},
{"/rest/:resource/:id", rest_cowboy, []},
Emakefile
{["deps/jsone/src/*"], [{outdir, "deps/ebin"}]}.
{["deps/rest/src/rest.erl", "deps/rest/src/*"], [{outdir, "deps/ebin"}]}.
Sample REST service implementation:
-module(rest_users).
-compile({parse_transform, rest}).
-export([init/0, populate/1, new/0, exists/1, get/0, get/1, post/1, delete/1]).
-export([keys_allowed/1]).
-record(user, {id, cn, name, type}).
-rest_record(user).
keys_allowed(Keys) ->
Allow = [<<"id">>, <<"test">>],
lists:all(fun(X) ->
lists:member(X, Allow)
end, Keys).
new() -> #user{}.
init() -> ets:new(rest_users, [public, named_table, {keypos, #user.id}]).
populate(Users) -> ets:insert(rest_users, Users).
exists(Id) ->
X = ets:member(rest_users, erlang:binary_to_list(Id)),
io:format("Member: ~p~n", [X]),
X.
get() -> ets:tab2list(rest_users).
get(Id) ->
[U] = ets:lookup(rest_users, erlang:binary_to_list(Id)),
io:format("User: ~p~n", [U]),
U.
delete(Id) -> ets:delete(rest_users, erlang:binary_to_list(Id)).
post(#user{} = User) -> ets:insert(rest_users, User);
post(Data) -> post(from_json(Data, #user{})).
curl -i -X POST -d "id=vlad" localhost:4000/rest/rest_users
curl -i -X POST -d "id=doxtop" localhost:4000/rest/rest_users
curl -i -X GET localhost:4000/rest/rest_users
curl -i -X PUT -d "id=5HT" localhost:4000/rest/rest_users/vlad
curl -i -X GET localhost:4000/rest/rest_users/5HT
curl -i -X DELETE localhost:4000/rest/rest_users/5HT
OM A HUM