2017-11-11 3 views
0

leptus (Cowboy을 기반으로 함)은 RESTful 서버로 사용하고 있습니다. 라우터에 문제가 있습니다. 내 코드에서얼랭 카우보이의 콜론

: 카우보이에서

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

내가 leptus를 사용하는 cowboy_router의 출처를 보았는데 이것이 가능하지 않다고 생각합니다. 소스에서 콜론을 "벗어나는"방법은 없습니다. 그것이 사실이라면 가장 좋은 방법은 /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}.