Я сопоставляю фильтр, чтобы проверить некоторые обязательные поля перед входом в систему. Мой код выглядит следующим образом:Spark работает до фильтра дважды
before("/login", (req, res) -> {
// do some things
LOGGER.debug("before /login");
LOGGER.debug("Request -> " + req);
LOGGER.degub("body " + req.body());
}
Когда мое приложение работает, before
фильтр вызывается дважды.
В каждом из них req
- это разные экземпляры. В первом содержимом req.body()
является пустая строка. Во втором, содержимое именно то, что я отправил из своего клиентского приложения.
Отладка, я нашел фильтр с путём описывается как +/*paths
, объявленный в классе SparkUtils
.
Есть два вопроса:
- Как я могу отключить это поведение?
- Какова цель фильтра, объявленного как
+/*paths
?
Я считаю, что причина фильтра вызывается дважды, потому, что я следовал шаги к Enabled CORS, как описано here. Во всяком случае, мне нужно использовать CORS, но фильтр, который вызывается дважды, является проблемой в моем сценарии.
Я сделал, как вы предлагаете, проверяя использование 'if (HttpMethod.post.name(). EqualsIgnoreCase (req.requestMethod())). Я не уверен, что он элегантный, но он решает. – josivan
@josivan да, это сработает, но если вы спросите меня, я лично думаю, что это не изящно –