Есть экшн(использую react+redux)например:
export const getUsers = () => (dispatch, getState) => {
let url = 'request?path=/user_params¶ms%5Bgroups%5D%5B%5D=main¶ms%5Bgroups%5D%5B%5D=users_relations_user';
return fetch(url, {
credentials: 'same-origin',
method: 'GET',
}).then(response => response.json())
.then(json => dispatch(receiveUsers(json))).catch(function (error) {
console.log('Request failure: ', error);
});
};
В данном случае в url я захардкодил параметры. Ранее в jquery эти параметры передавал с помощью массива:
$.ajax({
data: array,
url: ...})
А в массив уже прописывал параметры:
a = {
groups: [
'main',
'users_relations_user'
]
}
Можно ли так сделать в whatwg-fetch(использую его). Если да, то как?
Метод fetch принимает вторым аргументом объект init, в котором есть свойство body. Через него можно передать данные (тело) запроса, в том числе в виде параметров URL - для этого используется интерфейс URLSearchParams. Он конечно не может как jquery делать строку параметров из массива. Вам придется вручную (либо в цикле) добавлять каждый параметр методом append или set. Либо сразу передать готовую строку параметров в конструктор URLSearchParams.
Замечание: свойство body можно использовать только для запросов с данными (POST, PUT, ...). Для GET запросов его нельзя использовать.
К счастью, всё уже написано до нас :-)
import { stringify } from 'qs';
const queryParams = {
user: 'test',
userParams: {
name: 'test',
values: [1,2,3]
}
}
const host = 'http://localhost/123';
const url = `${host}/${stringify(queryParams)}`;
http://localhost/123/user=test&userParams%5Bname%5D=test&userParams%5Bvalues%5D%5B0%5D=1&userParams%5Bvalues%5D%5B1%5D=2&userParams%5Bvalues%5D%5B2%5D=3
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости