2016-01-12 7 views
7

Spark Frameworkで何か気付いたことがあります。スラッシュとマップされたルートが一致しません。したがって、/ api/testと/ api/test /は異なるURIとして扱います。スパークフレームワーク:スラッシュの有無にかかわらず一致

これらを一緒にワイルドカードする方法があれば問題ありませんが、そうは思われません。私は何か不足していますか?

私はこのルートをしたい:

Spark.get("/api/test", (req, res) -> { 
      return "TEST OK"; 
     }); 

一致/ API /テストOR/API /テスト/へ。現状では、それが唯一のAPI /テスト/一致した、と私はそれを切り替えた場合:

Spark.get("/api/test/", (req, res) -> { 
      return "TEST OK"; 
     }); 

それだけで一致した/api/test/

+0

私はスパークは何も分かっていませんが、URIが正規表現であれば、最後の**/**の後に**?**を追加することができます。 – Augusto

答えて

6

次のようなリダイレクトを使用してセットアップ前にフィルタを、次のことができます。

Spark.before((req, res) -> { 
    String path = req.pathInfo(); 
    if (path.endsWith("/")) 
     res.redirect(path.substring(0, path.length() - 1)); 
}); 

これはおそらく重複したルートをマッピングするよりも優れています。

+0

より良いオプション – mtyson

4

2013年前に尋ねているように見えるが、閉(と私はないと仮定2015年に)実装:

https://github.com/perwendel/spark/issues/97

とし、スラッシュ#を付けずに一致している必要があり

ルート97

jsnoriegamが

2013年8月31日にこの問題を開いたryberはほろ酔いが2015年11月22日

に機能要求ラベルを追加

2013、10月14日にこの問題を参照しryberするコミット/火花を追加しました

perwendelは、この問題に対する修正とryberにより、プルリクエストがありました

2015年11月23日にこれを閉じて:

https://github.com/ryber/spark/commit/556597e679dc224719188f8d27d8ba10e58fd8bb

しかし、これは現在のSimpleRouteMatcherクラスの一部ではないようです。

https://github.com/perwendel/spark/blob/ded78b7fa9b78749c0d5f6776bba9c9cd3cfb6fb/src/main/java/spark/route/SimpleRouteMatcher.java

+0

私は、後ろにスラッシュを付けてもしなくても、それぞれのルートをマップする必要があると思います。ブリー。 – mtyson

+0

またはスパークコードに潜入し、別のプルリクエストを提案しますが、それが受け入れられるかどうかは不明です。とにかく幸運。 –

+0

私は通常(Sinatraなど)正規表現を許可すると思いますので、 '/? 'で終わることができます。それはいいかもしれない。 – Max

関連する問題