2017-11-11 7 views
0

leptusCowboyに基づいています)を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}.