20 июл 2021
2515
Необходимо получить список товаров при помощи API Ozon и информацию по ним.
Для этого использую Vue, запросы отправляю при помощи Axios.
Так как у API Ozon есть ограничение - 1 запрос / 1 сек. Необходимо использовать задержку между запросами. Для этого воспользуюсь npm пакетом axios-delay.
Установка npm пакета axios-delay
Установлю в проект пакет при помощи пакетного менеджера:
npm install axios-delay
Теперь в необходимо подключить в файле данную библиотеку:
import axios from 'axios';
import delayAdapterEnhancer from 'axios-delay';
Использование axios-delay
Далее напишем метод для запроса:
data() {
return {
products: []
};
},
methods: {
getProduct: async function (){
let tmpProducts;
const params = {
filter: {
visibility: "ALL"
},
page: 0,
page_size: 0
};
const instance = axios.create({
adapter: delayAdapterEnhancer(axios.defaults.adapter),
baseURL: 'https://api-seller.ozon.ru/',
delay: 1200,
headers: {
'Client-Id': 'Ваш код клиента',
'Api-Key': 'Ваш api-ключ',
'Content-Type': 'application/json',
}
});
await instance.post("v1/product/list", params)
.then(response => { tmpProducts = response.data.result.items; })
.catch(error => console.log(error));
if (tmpProducts.length > 0 ) {
tmpProducts.map(async item => {
await instance.post("v2/product/info",
{
"offer_id": item.offer_id,
"product_id": item.product_id,
})
.then(response => {this.products.push(response.data.result); console.log(response.data)})
.catch(error => console.log(error));
})
}
}
}