У меня проблема с декодированием строки запроса между javascript и python.
Моя цель - отправить строку запроса с вложенным объектом внутри нее.
Моя проблема в том, что мой Python API декодирует мою строку запроса в dict со сплющенными ключами.
import qs from qs
import axios from 'axios'
const request = query => axiox.get(`https://localhost:3000/v1/example/test?${qs.stringify(query, {arrayFormat: 'comma' })}`
const queryPayload = {
someParam: {
filter: ['example1']
},
someOtherParam: { test: ['example2']}
}
request(queryPayload);
Результирующий параметр запроса 'someParam%5Bfilter%5D%5B0%5D=example1&someOtherParam%5Btest%5D%5B0%5D=example2'
Результат
При использовании сокола (api framework) или стандартного urlLib, предоставляемого Python 3, я получаю тот же результат, что означает, что я, вероятно, делаю ладью ie ошибка.
Использование сокола:
import falcon
falcon.uri.parse_query_string('someParam%5Bfilter%5D%5B0%5D=example1&someOtherParam%5Btest%5D%5B0%5D=example2')
Использование urllib:
import urllib
urllib.parse.parse_qs('someParam%5Bfilter%5D%5B0%5D=example1&someOtherParam%5Btest%5D%5B0%5D=example2')
Они оба возвращают меня: {'someParam[filter][0]': ['example1'], 'someOtherParam[test][0]': ['example2']}
Но я на самом деле ожидайте получения
{
someParam: {
filter: ['example1']
},
someOtherParam: { test: ['example2']}
}
Я относительно новичок в языке, но потратил некоторое время, чтобы попытаться выяснить причину.
Примечание: я также нашел это https://github.com/bernii/querystring-parser, что решило бы проблему, но я нахожу странным иметь конвертер qs и парсер qs, которые следуют отдельным правилам. * 104 0 *