我正在使用牛仔(https://github.com/extend/cowboy)进行一次宁静的网络服务,我需要从“http:// localhost:8080 /?a = 1&amp; b = 2&amp; c = 32”< / p>
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.
答案 0 :(得分:11)
您应该使用cowboy_http_req:qs_val/2
功能,例如cowboy_http_req:qs_val(<<"a">>, Req)
,请看https://github.com/extend/cowboy/blob/master/examples/echo_get/src/toppage_handler.erl
举个例子。
您还可以使用cowboy_http_req:qs_vals/1
检索所有查询字符串值的列表。
答案 1 :(得分:0)
对于升级到Cowboy 2的任何人,都有两种获取查询参数的方法。
您可以使用cowboy_req:parse_qs/1
:
QsVals = cowboy_req:parse_qs(Req),
{_, Lang} = lists:keyfind(<<"lang">>, 1, QsVals).
或通过使用cowboy_req:match_qs/2
来指定:
#{id := ID, lang := Lang} = cowboy_req:match_qs([id, lang], Req).
在cowboy docs中找到了这些示例的更多信息。