【问题标题】:How to use post and get handlers in erlang-cowboy如何在 erlang-cowboy 中使用 post 和 get 处理程序
【发布时间】:2014-07-09 16:22:47
【问题描述】:

请帮助我,因为我正在创建一个新项目,即使用 erlang-cowboy 创建一个登录页面,当用户输入数据并单击浏览器中的提交按钮时,登录页面包含用户名、密码和提交按钮,用户的详细信息应该为此保存在服务器中,我创建了一个文件 toppage_handler.erl 但是当我输入 make 命令时,错误正在引发

错误:

root@ErlangCowboy:~/cowboy/examples/practice_world# make
make[1]: Entering directory `/root/cowboy/examples/practice_world/deps/cowboy'
make[2]: Entering directory `/root/cowboy/examples/practice_world/deps/cowlib'
 APP    cowlib.app.src
make[2]: Leaving directory `/root/cowboy/examples/practice_world/deps/cowlib'
make[2]: Entering directory `/root/cowboy/examples/practice_world/deps/ranch'
 APP    ranch.app.src
make[2]: Leaving directory `/root/cowboy/examples/practice_world/deps/ranch'
 APP    cowboy.app.src
make[1]: Leaving directory `/root/cowboy/examples/practice_world/deps/cowboy'
 ERLC   practice_world_app.erl practice_world_sup.erl toppage_handler.erl
src/toppage_handler.erl:14: syntax error before: '{'
src/toppage_handler.erl:4: function handle/2 undefined
make: *** [ebin/practice_world.app] Error 1

toppage_handler.erl 文件是:

-module(toppage_handler).
-export([init/3]).
-export([handle/2]).
-export([terminate/3]).

init(_Transport, Req, []) ->
    {ok, Req, undefined}.

handle(Req, State) ->
    {Method, Req2} = cowboy_req:method(Req),
    case Method of
        <<"POST">> ->
            Body = <<"<h1>This is a response for POST</h1>">>
            {ok, Req3} = cowboy_req:reply(200, [], Body, Req3),
            {ok, Req3, State};
        <<"GET">> ->
            Body = <<"<h1>This is a response for GET</h1>">>
            {ok, Req3} = cowboy_req:reply(200, [], Body, Req3),
            {ok, Req3, State};
        _ ->
            Body = <<"<h1>This is a response for other methods</h1>">>
            {ok, Req3} = cowboy_req:reply(200, [], Body, Req3),
            {ok, Req3, State}
    end.

terminate(_Reason, _Req, _State) ->
    ok.

【问题讨论】:

    标签: erlang httphandler cowboy erl


    【解决方案1】:

    错误消息表明您的{ok, Req3} = ... 行在{ 之前存在语法错误。由于{ 是该行的第一个重要字符,我们可以合理地假设错误实际上是在 before 行上。

    确实,错误源于这一行:

    Body = <<"<h1>This is a response for POST</h1>">>
    

    And 实际上在其他两个 case 子句中重复出现。在每个 case 子句的第一行中,您缺少表达式终止符 ,。这些行应该是:

    Body = <<"<h1>This is a response for POST</h1>">>,
    {ok, Req3} = ...
    

    【讨论】:

    • login.html 文件: 登录页面
      用户名:
      密码:
      提交
    • 我想在添加逗号后你会得到一个不同的错误?如果没有,请确保您在所有三个子句中都解决了问题。 > 和 _ 都有同样的问题。
    • 感谢您的回复,但我为 GET 和 _ 添加了逗号
    猜你喜欢
    • 2016-04-20
    • 2016-03-18
    • 2015-02-27
    • 2013-06-24
    • 1970-01-01
    • 2017-01-14
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多