1

Scotty Web サーバーでいくつかの静的ファイルを提供しています。サブディレクトリに配置することもできます。私の現在のアプローチは次のようになります。

get "/:fileName" $ do
    fileName <- param "fileName"
    file $ pathToStaticFiles </> fileName

get "/:dirName/:fileName" $ do
    dirName <- param "dirName"
    fileName <- param "fileName"
    file $ pathToStaticFiles </> dirName </> fileName

get "/:dirName1/:dirName2/:fileName" $ do
    dirName1 <- param "dirName1"
    dirName2 <- param "dirName2"
    fileName <- param "fileName"
    file $ pathToStaticFiles </> dirName1 </> dirName2 </> fileName

....

単一のパターンのみを使用して、ディレクトリのネストの深さが異なるパスを一致させる可能性はありますか?

4

1 に答える 1

2

Scotty には、デフォルトのルート パターン ( と呼ばれるcapture) に加えて、他のルート パターンがいくつかあります。それらはドキュメンテーションにあります。

regexまさにあなたが望むもののようです。ドキュメントの例を次に示します。

get (regex "^/f(.*)r$") $ do
   path <- param "0"
   cap <- param "1"
   text $ mconcat ["Path: ", path, "\nCapture: ", cap]

あなたのユースケースでは、パス全体をキャッチし、「/」で分割し、結果のリストを</>.

于 2015-04-09T09:06:30.377 に答える