#javascript #ajax #https #axios #fetch
#javascript #ajax #https #axios #выборка
Вопрос:
У меня есть такие параметры. Некоторые из них представлены как объект (например, «переменные» — это объект), так как я могу отправить запрос GET с этими параметрами?
{"operationName":"getPostList","variables":{"input":{"type":"post","locale":"en","projectId":"1"}},"query":"query getPostList($input: PostSearchType) {n posts(input: $input, paging: {limit: 12}) {n items {n idn typen localen shortDescriptionn fullUrln thumbnailn tagsn titlen publishedAtn __typenamen }n __typenamen }n}n"}
Комментарии:
1. Как вам нравится … но во многом определяется тем, как анализатор на сервере ожидает, что вы представите вложенные данные. Стандарт строки запроса описывает только пары ключ = значение.
2. сервер включен Node.js , значит, я должен просто перечислить их?
Ответ №1:
Сначала я подумал, что это просто, просто добавьте их в качестве тела. Но оказывается, вы не можете добавить тело к запросу GET. страница axios на github гласит:
data
применимы ли данные, которые должны быть отправлены в качестве тела запроса, только для методов запроса «ПОМЕСТИТЬ», «ОПУБЛИКОВАТЬ», «УДАЛИТЬ» и «ИСПРАВИТЬ»
Вы можете только добавлять параметры, но:
params
должны ли параметры URL, отправляемые с запросом, быть обычным объектом или объектом URLSearchParams
Но есть кое-что, что может вас спасти: paramsSerializer
paramsSerializer
является необязательной функцией, отвечающей за сериализациюparams
(например, https://www.npmjs.com/package/qs , http://api.jquery.com/jquery.param /)
например
paramsSerializer: function (params) {
return Qs.stringify(params, {arrayFormat: 'brackets'})
}
С этого момента вам просто нужно выяснить, как сериализовать ваши параметры — с этим я не могу помочь, не зная, как принимающая система ожидает, что они будут отформатированы.