带有约束的牛仔路由不断失败

时间:2014-01-13 08:32:52

标签: routing erlang constraints cowboy

我一直在尝试使用这种简单的路由约束

Dispatch = cowboy_router:compile([{'_',
        [
            {"/tokens/:tokenid",{tokenid,int}, paytoken_handler, []}
        ]}]),

但我一直得到同样的错误。

我的请求是卷曲10.10.10.56:8080/tokens/1000 -v -H“内容类型:application / json”

[错误] Ranch监听器http已经以cowboy_protocol:start_link / 4 at< 0.97.0>启动了连接过程。退出原因:{function_clause,[{cowboy_router,check_constraints,[{tokenid,int},[{tokenid,<<“1000”>>}]],[{file,“src / cowboy_router.erl” },{线,276}]},{cowboy_router,match_path,4,[{文件, “SRC / cowboy_router.erl”},{线,264}]},{cowboy_router,执行,2,[{文件,” SRC / cowboy_router.erl “},{线,172}]},{cowboy_protocol,执行,如图4所示,[{文件,” SRC / cowboy_protocol.erl“},{线,529}]}]}

注意:当我删除约束{tokenid,int}时,它可以正常工作。

Dispatch = cowboy_router:compile([{'_',
        [
            {"/tokens/:tokenid", paytoken_handler, []}
        ]}]),

请帮助。

感谢。

1 个答案:

答案 0 :(得分:4)

编辑

看起来约束必须作为项目列表传递

{"/:id/:h",[{id,int},{h,int}], toppage_handler, []}

对于你的情况,这应该工作

{"/tokens/:tokenid",[{tokenid,int}], paytoken_handler, []}