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