chore: bump fvt_test's minirest to latest(1.3.6)
This commit is contained in:
parent
11165f4a9c
commit
abcdad39e5
|
@ -27,4 +27,3 @@ ok
|
|||
+ POST `/counter`
|
||||
|
||||
计数器加一
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
{erl_opts, [debug_info]}.
|
||||
{deps,
|
||||
[
|
||||
{minirest, {git, "https://github.com/emqx/minirest.git", {tag, "0.3.6"}}}
|
||||
{minirest, {git, "https://github.com/emqx/minirest.git", {tag, "1.3.6"}}}
|
||||
]}.
|
||||
|
||||
{shell, [
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
%% -*- mode: erlang -*-
|
||||
{application, http_server,
|
||||
[{description, "An OTP application"},
|
||||
{vsn, "0.1.0"},
|
||||
[{description, "An HTTP server application"},
|
||||
{vsn, "0.2.0"},
|
||||
{registered, []},
|
||||
% {mod, {http_server_app, []}},
|
||||
{modules, []},
|
||||
|
|
|
@ -10,51 +10,107 @@
|
|||
stop/0
|
||||
]).
|
||||
|
||||
-rest_api(#{
|
||||
name => get_counter,
|
||||
method => 'GET',
|
||||
path => "/counter",
|
||||
func => get_counter,
|
||||
descr => "Check counter"
|
||||
}).
|
||||
-rest_api(#{
|
||||
name => add_counter,
|
||||
method => 'POST',
|
||||
path => "/counter",
|
||||
func => add_counter,
|
||||
descr => "Counter plus one"
|
||||
}).
|
||||
-behavior(minirest_api).
|
||||
|
||||
-export([
|
||||
get_counter/2,
|
||||
add_counter/2
|
||||
]).
|
||||
-export([api_spec/0]).
|
||||
-export([counter/2]).
|
||||
|
||||
api_spec() ->
|
||||
{
|
||||
[counter_api()],
|
||||
[]
|
||||
}.
|
||||
|
||||
counter_api() ->
|
||||
MetaData = #{
|
||||
get => #{
|
||||
description => "Get counter",
|
||||
summary => "Get counter",
|
||||
responses => #{
|
||||
200 => #{
|
||||
content => #{
|
||||
'application/json' =>
|
||||
#{
|
||||
type => object,
|
||||
properties => #{
|
||||
code => #{type => integer, example => 0},
|
||||
data => #{type => integer, example => 0}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
post => #{
|
||||
description => "Add counter",
|
||||
summary => "Add counter",
|
||||
'requestBody' => #{
|
||||
content => #{
|
||||
'application/json' => #{
|
||||
schema =>
|
||||
#{
|
||||
type => object,
|
||||
properties => #{
|
||||
payload => #{type => string, example => <<"sample payload">>},
|
||||
id => #{type => integer, example => 0}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
responses => #{
|
||||
200 => #{
|
||||
content => #{
|
||||
'application/json' =>
|
||||
#{
|
||||
type => object,
|
||||
properties => #{
|
||||
code => #{type => integer, example => 0}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{"/counter", MetaData, counter}.
|
||||
|
||||
counter(get, _Params) ->
|
||||
V = ets:info(relup_test_message, size),
|
||||
{200, #{<<"content-type">> => <<"text/plain">>}, #{<<"code">> => 0, <<"data">> => V}};
|
||||
counter(post, #{body := Params}) ->
|
||||
case Params of
|
||||
#{<<"payload">> := _, <<"id">> := Id} ->
|
||||
ets:insert(relup_test_message, {Id, maps:remove(<<"id">>, Params)}),
|
||||
{200, #{<<"code">> => 0}};
|
||||
_ ->
|
||||
io:format("discarded: ~p\n", [Params]),
|
||||
{200, #{<<"code">> => -1}}
|
||||
end.
|
||||
|
||||
start() ->
|
||||
application:ensure_all_started(minirest),
|
||||
_ = spawn(fun ets_owner/0),
|
||||
Handlers = [{"/", minirest:handler(#{modules => [?MODULE]})}],
|
||||
Dispatch = [{"/[...]", minirest, Handlers}],
|
||||
minirest:start_http(?MODULE, #{socket_opts => [inet, {port, 7077}]}, Dispatch).
|
||||
RanchOptions = #{
|
||||
max_connections => 512,
|
||||
num_acceptors => 4,
|
||||
socket_opts => [{send_timeout, 5000}, {port, 7077}, {backlog, 512}]
|
||||
},
|
||||
Minirest = #{
|
||||
base_path => "",
|
||||
modules => [?MODULE],
|
||||
dispatch => [{"/[...]", ?MODULE, []}],
|
||||
protocol => http,
|
||||
ranch_options => RanchOptions,
|
||||
middlewares => [cowboy_router, cowboy_handler]
|
||||
},
|
||||
Res = minirest:start(?MODULE, Minirest),
|
||||
minirest:update_dispatch(?MODULE),
|
||||
Res.
|
||||
|
||||
stop() ->
|
||||
ets:delete(relup_test_message),
|
||||
minirest:stop_http(?MODULE).
|
||||
|
||||
get_counter(_Binding, _Params) ->
|
||||
V = ets:info(relup_test_message, size),
|
||||
return({ok, V}).
|
||||
|
||||
add_counter(_Binding, Params) ->
|
||||
case lists:keymember(<<"payload">>, 1, Params) of
|
||||
true ->
|
||||
{value, {<<"id">>, ID}, Params1} = lists:keytake(<<"id">>, 1, Params),
|
||||
ets:insert(relup_test_message, {ID, Params1});
|
||||
_ ->
|
||||
io:format("discarded: ~p\n", [Params]),
|
||||
ok
|
||||
end,
|
||||
return().
|
||||
minirest:stop(?MODULE).
|
||||
|
||||
ets_owner() ->
|
||||
ets:new(relup_test_message, [named_table, public]),
|
||||
|
|
Loading…
Reference in New Issue