40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
const got = require('@/utils/got');
|
|
const { generateRequestHeaders, generateProductItem } = require('./utils');
|
|
|
|
const request = ({ moreToken = '' }) =>
|
|
got({
|
|
method: 'post',
|
|
url: 'https://srv-mp.app.ikea.cn/content/search/products/advanced',
|
|
headers: generateRequestHeaders(),
|
|
searchParams: {
|
|
keyword: '新品',
|
|
moreToken,
|
|
},
|
|
json: {},
|
|
});
|
|
|
|
module.exports = async (ctx) => {
|
|
const allProductSummaries = [];
|
|
|
|
const loadMoreRequest = async ({ moreToken }) => {
|
|
const response = await request({ moreToken });
|
|
const { data } = response;
|
|
allProductSummaries.push(data.productSummaries);
|
|
if (data.moreToken) {
|
|
await loadMoreRequest({ moreToken: data.moreToken });
|
|
}
|
|
return Promise.resolve();
|
|
};
|
|
|
|
await loadMoreRequest({});
|
|
|
|
const products = allProductSummaries.flat();
|
|
|
|
ctx.state.data = {
|
|
title: 'IKEA 宜家 - 当季新品推荐',
|
|
link: 'https://www.ikea.cn/cn/zh/new/',
|
|
description: '当季新品推荐',
|
|
item: products.map(generateProductItem),
|
|
};
|
|
};
|