init / 2 undefined in cowboy hello_handler

时间:2016-11-29 22:59:00

标签: erlang cowboy

我正在关注https://ninenines.eu/docs/en/cowboy/2.0/guide/getting_started/

当我跑

gmake new t=cowboy_http n=hello_handler

这会创建src / hello_handler

-module(hello_handler).
-behaviour(cowboy_http_handler).

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

-record(state, {
}).

init(_, Req, _Opts) ->
    {ok, Req, #state{}}.

handle(Req, State=#state{}) ->
    {ok, Req2} = cowboy_req:reply(200, Req),
    {ok, Req2, State}.

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

指令说要修改init / 2,但只有init / 3。这个文件已经过时了吗?

1 个答案:

答案 0 :(得分:2)

您正在查看的文档与您正在查看的牛仔版本不符。文档适用于版本2.x,处理程序适用于版本1.x。

Cowboy 1.x系列实现了一个带有行为的http处理程序。当您从模板生成处理程序时,该处理程序会实现该行为。

但是,在Cowboy 2.x中,处理程序只需要实现init/2,并且不再需要实现该行为。

当您查看牛仔时,您可以使用make docs为其制作文档。然后,您可以在doc中本地浏览它们。这样,您就可以获得与您的牛仔版本相匹配的文档。