gpt4 book ai didi

rest - Cowboy 中的多个休息处理程序

转载 作者:行者123 更新时间:2023-12-02 08:29:31 27 4
gpt4 key购买 nike

有没有一种简单的方法可以在 Cowboy 中设置一个允许多个处理程序的调度路由,例如:/base/add_something/base/remove_something

并让每个操作都由可以区分它们的单个处理程序提供服务?所有示例似乎都将 1 个处理程序映射到 1 个分派(dispatch),如果可能,我想合并功能。

最佳答案

你可以这样做:

调度:

...
Dispatch = cowboy_router:compile(
[{'_', [{"/base/:action",
[{type,
function,
is_in_list([<<"add_something">>,
<<"remove_something">>])}],
app_handler, []}]}]),
...
is_in_list(L) ->
fun(Value) -> lists:member(Value, L) end.
...

在 app_handler.erl 中:

...
-record(state, {action :: binary()}).
...
rest_init(Req, Opts) ->
{Action, Req2} = cowboy_req:binding(action, Req),
{ok, Req2, #state{action=Action}}.
...
allowed_methods(Req, #state{action=<<"add_something">>}=State) ->
{[<<"POST">>], Req, State};
allowed_methods(Req, #state{action=<<"remove_something">>}=State) ->
{[<<"DELETE">>], Req, State}.
...

等等。

关于rest - Cowboy 中的多个休息处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28569303/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com