2017-11-11 274 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}.