#javascript #reactjs #api #axios
Вопрос:
Это первый раз, когда я нашел подобный API, форма в ключе params похожа на массив, но, возможно, это не массив и как он реализован в axios?
{baseUrl}/список?фильтр[v3_p.name]=Данные пакета и фильтр[pro.name]=Indosat и фильтр[pp.категория]=Ваучер и фильтр[pd.is_enable]=1
Мой код в axios выглядит так:
export const filterProduk = (data) => async (dispatch) => {
try {
const params = { filter: data }
const res = await axios.get(`${baseUrl}/list`, data, {
params,
paramsSerializer: function paramsSerializer(params) {
return Object.entries(Object.assign({}, params, { filter: 'HIDDEN' })).map(([key, value]) => `${key}=${value}`).join('amp;')
}
});
dispatch({
type: FILTER_SUCCESS,
payload: res.data.data
});
} catch (error) {
dispatch({
type: FILTER_FAILED,
payload: error.response.data,
});
}
};
и я тоже пытался
export const filterProduk = (data) => async (dispatch) => {
try {
const res = await axios.get(`${baseUrl}/list`, data, {
params: {
filter: [data.package, data.provider, data.category, data.is_enable]
}
});
dispatch({
type: FILTER_SUCCESS,
payload: res.data.data
});
} catch (error) {
dispatch({
type: FILTER_FAILED,
payload: error.response.data,
});
}
};
Я не получаю этого ни в какой документации и надеюсь получить ответ здесь!
Спасибо
Ответ №1:
Вы можете использовать qs.stringify
для сериализации параметров. И вы должны передать config
объект в качестве второго аргумента axios.get
.
axios.get(`${baseUrl}/list`, {
params,
paramsSerializer: (params) => qs.stringify(params, { encode: false }),
})
Предложение: Вы можете настроить базовый URL API с помощью axios.defaults.baseURL
или создать пользовательский экземпляр axios и настроить его, чтобы не вводить его при каждом вызове.
// axios.js
import axios from 'axios'
export default axios.create({
baseURL: 'https://api.example.com'
})
// queries.js
import axios from './axios'
axios.get('/list', {
params,
paramsSerializer: (params) => qs.stringify(params, { encode: false }),
})
Комментарии:
1. Я использовал его, но его URL-адрес API только для чтения {baseUrl}/список, в котором нет фильтра параметров[]=значение …
2. @Fery1320 Извините, не совсем понимаю, что вы имеете в виду. Что происходит, когда вы используете
qs.stringify
для сериализации параметров?