Spark Framework: совпадение с косой чертой или без нее

Я заметил что-то в Spark Framework. Он не соответствует косым чертам с сопоставленным маршрутом. Поэтому он рассматривает /api/test и /api/test/как разные URI.

Это прекрасно, если есть способ подстановить их вместе, но, похоже, нет. Я что-то пропустил?

Я хочу этот маршрут:

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

Чтобы совместить /api/test OR/api/test/. Как бы то ни было, он соответствует только /api/test, и если я переключу его на:

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

Он соответствует только /api/test/

Ответы

Ответ 1

Вы можете настроить фильтр перед перенастройкой, например:

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

Это, вероятно, лучше, чем отображение повторяющихся маршрутов.

Ответ 2

Похоже, что это было задано в 2013 году, но закрыто (и я предполагаю, что оно не реализовано) в 2015 году:

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

Маршруты должны совпадать с косой чертой # 97 и без нее

jsnoriegam открыл этот вопрос 31 августа 2013 года

ryber добавил фиксацию к ryber/spark, которая ссылалась на эту проблему 14 октября 2013 г.

подвыпившие добавили ярлык запроса функции 22 ноября 2015 года

Первендель закрыл это 23 ноября 2015 г.

Был запрос на тянущий запрос с исправлением этой проблемы:

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

Однако это не похоже на текущий класс SimpleRouteMatcher:

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