@ororambo

Flask и проблемы с символом '&' в URL?

Есть url:
site.com/?foo=bar&

В request.url оказывается site.com/?foo=bar
В request.query_string оказывается foo=bar

Т.е. теряется '&' из 'bar&'. Вопрос: как получить GET-параметр с & на конце
  • Вопрос задан
  • 477 просмотров
Решения вопроса 2
@pcdesign
Вообще это конечно не правильно, но можно вот так:
@app.route('/foo')
def foo():
    raw = str(request)
    return raw


curl 'localhost:5000/foo?r=M&Ms'
Получил вот такой ответ:
<Request 'http://localhost:5000/foo?r=M&Ms' [GET]>

Дальше эту строчку обычной регуляркой разобрать и получить параметр.

@app.route('/foo')
def foo():
    raw = str(request)
    print(raw)
    p = re.compile(r"""(\?|\&)([^=]+)\=(?P<val>([^']+))""")
    r = p.search(raw)
    return r.group("val")
Ответ написан
@ororambo Автор вопроса
Проблема решена. Оказалось что POSTman, через который я делал запрос, убирает 'ненужный' амперсанд. Через браузер такого нет, получается правильно вытащить параметр через request. Буду думать как с этим быть дальше, всем спасибо.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
NeiroNx
@NeiroNx
Программист
"http://site.com/?"+urllib.quote_plus("foo=bar&")
urllib.unquote_plus("string%26%25%3A")

читайте документацию по urllib
Ответ написан
а почему собственно проблемы ?
в указанном варианте все правильно отработало. потому как символ
&
предназаначен для указания на следующий параметр. которого у Вас нет. следовательно оно просто его проигнорировало как ненужный в данном контексте.
просто нужно понять зачем вас этот символ
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы