카우보이 routing guide은 각 경로가 "초기화시 요청 처리자에게 부여 될 옵션"을 포함하는 튜플로 구성되어 있다고 말합니다. 그러나 옵션의 목적을 설명하지는 않으며 핸들러에 전달 된 Req 객체가 경로와 바인딩에 대한 정보를 포함하고 있으므로 사용 방법을 잘 모릅니다.카우보이의 라우팅 옵션의 목적은 무엇입니까?
라우팅 옵션에 고유 한 경로 정보가 포함되지 않은 경우 사용 사례에는 어떤 것이 있습니까?
카우보이 routing guide은 각 경로가 "초기화시 요청 처리자에게 부여 될 옵션"을 포함하는 튜플로 구성되어 있다고 말합니다. 그러나 옵션의 목적을 설명하지는 않으며 핸들러에 전달 된 Req 객체가 경로와 바인딩에 대한 정보를 포함하고 있으므로 사용 방법을 잘 모릅니다.카우보이의 라우팅 옵션의 목적은 무엇입니까?
라우팅 옵션에 고유 한 경로 정보가 포함되지 않은 경우 사용 사례에는 어떤 것이 있습니까?
옵션은 처리기 init/3
메서드에 전달됩니다. handlers guide에는 번역 옵션을 사용하는 예가 있습니다. 당신은 다른 옵션과 동일한 핸들러를 가리키는 여러 경로를 가질 수 있습니다
-record(state, {
lang :: en | fr
%% More fields here.
}).
init(_Type, Req, Opts) ->
{_, Lang} = lists:keyfind(lang, 1, Opts),
{ok, Req, #state{lang=Lang}}.
handle(Req, State#state{lang = Lang}) ->
{ok, Req2} = cowboy_req:reply(200, [
{<<"content-type">>, <<"text/plain">>}
], translate_text(<<"Hello World!">>, Lang), Req),
{ok, Req2, State}.
는 또 다른 예는 호스트 이름에서 언어를 취하고있다 : 핸들러에서
{"/pl", toppage_handler, [{lang, fr}]}
{"/en", toppage_handler, [{lang, en}]}
, 당신이 뭔가를 가질 수있다. 예를 들어 요청을받은 호스트를 기반으로 언어를 감지 할 수 있습니다.
[{'fr.example.org', [
{"/", toppage_handler, [{lang, fr}]
]},
{'en.example.org', [
{"/", toppage_handler, [{lang, en}]
].
당신은 Req
에있을 것입니다 바인딩 PathMatch
및 HostMatch
및 언어 값을 사용하여, 동일한 달성 할 수 있지만, 옵션이 더 일반적이다. 라우팅 옵션은 추가 정보를 만들고이를 처리기에 전달하는 데 사용됩니다.