前言
cowboy的使用的過程中, 我注意到有一個量我始終未曾使用過, 就是State.
init(Req, State) ->
{ok, Req, State}.
探索
開始的時(shí)候, 我以為 State 是一個 record, 然后我嘗試使用 ~p 打印了State.
lager:info("~p~n", [State]) %% 打印結(jié)果為 []
結(jié)合啟動服務(wù)的文件, 我猜測 State 的值就是 Route tuple 格式的最后一個值.
Routes = [
{'_', [
{"/health", health, []}
]}
],
Dispatch = cowboy_router:compile(Routes),
{ok, _} = cowboy:start_clear(http, [{port, 8080}], #{env => #{dispatch => Dispatch}})
更改之后, 果然 handler 文件里面接收的 State 的值也修改了
應(yīng)用場景
說到應(yīng)用場景, 應(yīng)該滿足以下條件:
取值的方法本身和 handler 文件無關(guān), 何處都可以獲取
(雖然我測試下來, 取值似乎無法造成瓶頸, 但還是有一些輕微的影響的)