Я боролся с этим некоторое время, и не могу понять это.
У меня есть проект google appengine с flask, и мне нужен маршрут, который обрабатывает данные base64 URIencoded.
Вот обработчик, который у меня есть для этого маршрута:
@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 (или колба?) Декодирует URL перед маршрутизацией?
- Почему поведение не соответствует между локальным и развернутым приложением?
Спасибо за вашу помощь