Я создаю конечную точку Python на фляге (что я довольно новичок). Я отправляю запросы из PHP на него (так как именно это будет использовать большинство наших пользователей для отправки запросов). У меня есть неассоциативный массив данных, который должен быть отправлен (т.е. что-то вроде 'mode' => array('foo', 'bar', 'baz')
)
Однако в колбе при выполнении str(request.form)
все, что я выхожу, это ImmutableMultiDict([('mode[1]', 'foo'), ('mode[0]', 'bar'), ('mode[2]', 'baz')])
Теперь, посмотрев на stackoverflow (например, Отправка данных массива с помощью jquery и фляги) Я обнаружил, что я должен быть в состоянии сделать что-то вроде request.form.getlist('mode[]')
(с квадратными скобками или без них — в зависимости от того, на какой вопрос вы смотрите здесь). Однако ни одна из них не работает.
В конце концов я нашел временное решение, которое, если вы json_encode данных, прежде чем поместить их в поля сообщения curl (т.е. вы делаете 'mode' => json_encode(array('foo', 'bar', 'baz'))
тогда вещи, кажется, получаются хорошо Flask (ImmutableMultiDict([('mode', '["foo","bar","baz"]')])
,
Но я не очень понимаю, почему это решение работает — я столкнулся с ним не случайно, а с какой-то образованностью. Может кто-нибудь объяснить, пожалуйста, логику того, почему это работает, или если есть лучшее (TM) решение.
Заранее спасибо!
Ты можешь сделать:
request.form.values()
Таким образом, вы получите только значения из пар диктов в виде массива. Вам не нужно кодировать и декодировать данные в JSON только для чтения значений.
Других решений пока нет …