[erlang] cowboy handler State 的使用

前言

cowboy的使用的过程中, 我注意到有一个量我始终未曾使用过, 就是State.

init(Req, State) ->
    {ok, Req, State}.

探索

开始的时候, 我以为 State 是一个 record, 然后我尝试使用 ~p 打印了State.

lager:info("~p~n", [State])  %% 打印结果为 []

结合启动服务的文件, 我猜测 State 的值就是 Route tuple 格式的最后一个值.

 Routes = [
    {'_', [
      {"/health", health, []}
    ]}
  ],
  Dispatch = cowboy_router:compile(Routes),
  {ok, _} = cowboy:start_clear(http, [{port, 8080}],  #{env => #{dispatch => Dispatch}})

更改之后, 果然 handler 文件里面接收的 State 的值也修改了

应用场景

说到应用场景, 应该满足以下条件:
取值的方法本身和 handler 文件无关, 何处都可以获取
(虽然我测试下来, 取值似乎无法造成瓶颈, 但还是有一些轻微的影响的)

你可能感兴趣的:([erlang] cowboy handler State 的使用)