Closed3
microCMSのコンテンツ情報を全件取得する
2021/08/18時点で、microCMSには以下のような仕様がある。
limit
取得件数を指定します。
デフォルト値は10です。
上限値はありませんが、レスポンスサイズ(レスポンスヘッダのcontent-lengthの値)が約5MBを超えるとエラーが発生します。
そのため、大量のコンテンツの全件取得をしたい場合は下記のoffsetパラメータと組み合わせてページング処理を行ってください。
全件取得するためにはページング処理等を行なって欲しいとのことなので、その備忘録
結論
再帰関数を用いてデフォルト10件ずつ取得してcontents情報を全て繋げる。
一度に取得できるデータ総量が5MBとという制約がある為、どちらにしても細切りにしてAPIを呼ぶのが無難
// getAllContents.js
const client = createClient({
serviceDomain: process.env.MICROCMS_DOMAIN,
apiKey: process.env.API_KEY
})
const getAllContents = async (limit=10, offset=0) => {
const data = await client.get({
endpoint: `{MICROCMS_ENDPOINT}`,
queries: {
offset,
limit
}
})
if (data.offset + data.limit < data.totalCount) {
const contents = await getAllContents(data.limit, data.offset + data.limit)
return [ ...data.contents, ...contents ]
}
return data.contents
}
export { getAllContents }
MICROCMS_ENDPOINT
にはAPIのエンドポイントを記載する。
今回はmicrocmsが提供しているSDKを用いた。
2022/03/15版を作成しました。
このスクラップは2021/08/18にクローズされました