Я боролся с этим некоторое время, и, похоже, не могу понять это. У меня есть проект google appengine с флягой, и мне нужен маршрут, который обрабатывает данные в кодировке base64 URI.
Вот обработчик, который у меня есть для этого маршрута:
@app.route('/test/<data1>/<data2>', methods=['GET'])
def test(data1, data2):
return "data1:%s<br>data2:%s"%(data1, data2)
Теперь это прекрасно работает при работе с dev_appserver:
http://localhost/test/hi/there
# returns:
data1:hello
data2:there
а также
http://localhost/test/hi%2fho/there
# returns:
data1:hi%2Fho
data2:there
чего я и ожидал.
Использование тех же URL-адресов в развернутой версии для appengine:
- Первый возвращает тот же результат
- Второй терпит неудачу, потому что
%2f
декодируется до маршрутизации в/
, поэтому маршрут больше не соответствует шаблону.
Мои вопросы):
- Почему appengine (или flask?) декодирует URL-адрес перед маршрутизацией?
- Почему поведение локального и развернутого appengine несовместимо?
Спасибо за вашу помощь