二郎牛仔冒号

Colon in Erlang Cowboy

我正在使用 leptus, which is based on Cowboy 作为 RESTful 服务器。我的路由器有问题。

在我的代码中:

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

在Cowboy中,当有冒号时,它会进行绑定。但是,如果 URL 路径中实际上有一个冒号怎么办?我不希望它被束缚。官网教程中没有关于这个问题的资料

我查看了 cowboy_router 的来源(leptus 使用),我认为这是不可能的。我看不到任何方式 "escape" 来源中的冒号。如果这是真的,那么您最好的选择是使用 /restconf/operations/:anything 匹配所有此类路由,然后对函数内的参数 anything 的值进行 case。这是一个例子:

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