2017-11-11 275 views
0

我使用leptus(基于Cowboy)作为RESTful服务器。我遇到了路由器问题。Erlang Cowboy中的冒号

在我的代码:

post("/restconf/operations/nm-restful:create-mp", Req, State) -> 
    {200, {json, <<>>, State}. 

牛仔,当有一个冒号,它会做绑定。但是如果URL路径中实际存在冒号呢?我不希望它受到束缚。官方网站教程中没有关于这个问题的信息。

+0

我看了一下'cowboy_router'的源码,我不认为这是可能的。我看不出任何方法来“逃离”源代码中的冒号。如果这是真的,最好的办法是使用'/ restconf/operations /:anything'匹配所有这些路由,然后在函数内的参数'anything'的值上做一个'case'。 – Dogbert

+0

@Dogbert你的建议是一个很好的解决方法,thx – ruanhao

回答

0

我看着cowboy_router(哪个leptus使用)的来源,我不认为这是可能的。我看不出任何方法来“逃离”源代码中的冒号。如果这是真的,那么最好的办法是使用/restconf/operations/:anything来匹配所有这样的路由,然后对函数内部的任何参数的值做一个例子。下面是一个例子:

post("/restconf/operations/:thing", Req, State) -> 
    case leptus_req:param(Req, thing) of 
    <<"nm-restful:create-mp">> -> 
     {200, {json, <<>>, State}; 
    _ -> 
     {404, {json, <<>>, State}.