Отправка GET-запроса с параметрами, представленными как объект (axios, выборка)?

#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'})
}
 

С этого момента вам просто нужно выяснить, как сериализовать ваши параметры — с этим я не могу помочь, не зная, как принимающая система ожидает, что они будут отформатированы.