Я реализую веб-API REST.Некоторые данные находятся в теле запроса как JSON, другие - в самом URL, например, http://myhost/webapp/api/series/GMT/OTHER-DATA
.
Ключевым параметром здесь является GMT, который является идентификатором часового пояса.Проблема возникает, когда идентификатор часового пояса содержит косую черту, например Europe/London
.Поскольку косая черта - это специальный символ, я закодировал этот параметр, поэтому я получил http://myhost/webapp/api/series/Europe%2FLondon/OTHER-DATA
.
И мой (веб-клиент) не смог связаться с сервером и получил 404. Я изменил метод с POST, чтобы получить и увидел, что все работаетхорошо.
Поскольку я должен использовать POST здесь, я нашел некрасивый обходной путь, но интересно знать, почему это происходит?
Я использую Spring MVC, но я не думаю, что это уместно здесь: я пытался поставить точку останова в Spring 101 * и в нескольких фильтрах Spring Spring, которые обычно вызываются, когда все идет хорошо, и я этого не делалвидите, что даже один из них вызывается, когда URL содержит %2F
.
Я провел еще один эксперимент.Вместо этого я попытался использовать %20
(пробел) и увидел, что он отлично работает с GET и не работает с POST.
Я был бы признателен, если бы знал, есть ли "хорошее" решение проблемы