我们的网站上有搜索功能。我需要为 Zendesk 的所有帮助台文章建立索引,以便它们出现在搜索结果中。我目前有以下代码,但它只会返回前 30 个结果。
const https = require('https');
const { Textify } = require('../common/Textify');
const fs = require('fs');
const path = require('path');
function GetZDeskArticles() {
return new Promise((res, rej) => {
const request = https.request(
'https://example.zendesk.com/api/v2/help_center/en-us/articles.json',
(response) => {
let data = '';
response.on('data', (chunck) => {
data = data + chunck.toString();
});
response.on('end', () => {
const body = JSON.parse(data);
res(body.articles);
});
}
);
request.on('error', (error) => {
rej(error);
});
request.end();
});
}
async function StoreZDeskArticles() {
const zdeskArticles = await GetZDeskArticles();
let arts = [];
zdeskArticles.forEach((art) => {
if (art.draft) return;
art.body = Textify(art.body);
arts.push(art);
});
let storagePath = path.resolve(
__dirname,
'../',
'_data',
'ZenDeskArticles.json'
);
fs.writeFileSync(storagePath, JSON.stringify(arts), 'utf8');
}
StoreZDeskArticles();
如果我将
?page%5Bsize%5D=100
添加到请求网址,我显然会得到前 100 个结果。但我总共有 164 篇文章需要索引。我已阅读Zendesk 分页文档,但不确定如何将他们的解决方案应用于我的情况。
对于分页:在返回的 JSON 中,有一个“links”部分,其中有一个条目“next”,即您需要执行下一个请求的文章下一页的 URL。
对于偏移量:返回的 JSON 中有一个条目“next_page”,它为您提供下一页。不过,建议使用分页而不是偏移,因为它具有更好的性能。
对于这两种解决方案:您迭代请求,使用“next”或“next_page”条目进行后续请求,直到相应的条目为空,然后您就已经看到了所有文章。
https://developer.zendesk.com/api-reference/introduction/pagination/