I am using cowboy( https://github.com/extend/cowboy) for one restful web service, I need to get the params from "http://localhost:8080/?a=1&b=2&c=32"
init({tcp, http}, Req, Opts) ->
log4erl:debug("~p~n", [Opts]),
{ok, Req, undefined_state}.
handle(Req, State) ->
{ok, Req2} = cowboy_http_req:reply(200, [], <<"Hello World!">>, Req),
io:format("How to get the params from Req ? "),
{ok, Req2, State}.
terminate(Req, State) ->
log4erl:debug("~p~p~n", [Req, State]),
ok.
You should use the cowboy_http_req:qs_val/2
function, e.g. cowboy_http_req:qs_val(<<"a">>, Req)
, look at https://github.com/extend/cowboy/blob/master/examples/echo_get/src/toppage_handler.erl
for an example.
You can also use cowboy_http_req:qs_vals/1
to retrieve a list of all query string values.
For anyone who have upgrade to Cowboy 2, there are two ways of getting the query params.
You can get them all by using cowboy_req:parse_qs/1
:
QsVals = cowboy_req:parse_qs(Req),
{_, Lang} = lists:keyfind(<<"lang">>, 1, QsVals).
Or specific ones by using cowboy_req:match_qs/2
:
#{id := ID, lang := Lang} = cowboy_req:match_qs([id, lang], Req).
Read more in the cowboy docs where these examples where found.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With