2015-09-28 3 views
1

Есть ли способ фляги принять полный URL-адрес в качестве параметра?колба принимает полный url как переменную

Я знаю, что принимаю путь с косой чертой. Однако мне нужно принять все, включая «?» представленного URL. Например

http://someapi/someurl.com?andother?yetanother

Я хочу «someurl.com?andother?yetanother» как полный аргумент принять. Я не могу разбить его на несколько, так как я заранее не знаю, что будет дано.

+1

Общая форма для них - «параметры запроса», и вы можете использовать ['request.args'] (http://flask.pocoo.org/docs/0.10/api/#incoming-request-data) для поймите их. Однако я бы ожидал, что это будут * действительные * параметры запроса; обычно вы увидите 'http: //example.com? foo = bar & baz = quux'. Что вы пытаетесь достичь? – Makoto

+0

Реструктурируйте свой URI, чтобы принять один параметр запроса, который поймает все значение. 'HTTP: // someapi/full_param = "someurl.com?blah?blah?blah"'. – Monkpit

+0

Что я делаю, это проверка ответа на URL из разных мест. К сожалению, некоторые URL-адреса, которые я тестирую, требуют от меня передать переменную, чтобы получить правильный ответ. Однако я не знаю заранее, что это за переменная, и поэтому я не могу предугадать ее. –

ответ

2

path шаблон позволит вам захватить более сложные шаблоны маршрутов как URL-адресов:

@app.route('/catch/<path:foo>') 
def catch(foo): 
    print(foo) 
    return foo 

Данные мимо ? указывают, что это параметр запроса, поэтому они не будут включены в эту скороговорку. Вы можете либо получить доступ к этой форме формы request.query_string, либо создать ее обратно с request.args, как указано в комментариях.

+0

Спасибо. Я использую, к сожалению, это request.query_string, которая меня достает. Точные параметры не известны заранее. Поэтому я не могу сказать «request.args (« foo »), потому что я не знаю, существует ли« foo », и (если это так), что такое точное имя. Следовательно, мое затруднение. –

+0

@JacekPerry, но вы можете просто используйте 'for arg in request.args', чтобы перебрать все ключи. Как еще вы ожидали этого? – davidism

+0

Хорошо, что я хотел бы сделать, это просто принять полный URL как строку, так как я передавая как строку. Однако у меня было плохое чувство, что это может быть невозможно, что будет больно. –

Смежные вопросы