web
microCMSで全記事取得する
公開日:2022年1月23日
最終更新日:2022年1月23日
目次
microCMSの記事取得件数はドキュメントに書いてるとおりデフォルトで10件です。
数値の指定に上限はないですが、レスポンスサイズが5MBを超えるとエラーになってしまいます。
https://document.microcms.io/content-api/get-list-contents#h4cd61f9fa1
そのため、大量コンテンツを全件取得するにはoffsetを使って再帰的に10件ずつ取得し、それを繋げます。
記事の取得はmicroCMS SDKを使ってますが、10件取得できれば他の方法でもいいです。
import { client } from '@/libs/client'
import { Blog } from '@/types/Blog'
const getAllContents = async (limit = 10, offset = 0): Promise<Blog[]> => {
const data = await client.get({
endpoint: 'blog',
queries: { limit, offset },
})
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 }
あとは取得したいページで呼び出せば、全件取得できます。
参考サイト
Read next
- 2022年1月15日Next.js × microCMS × VercelでOGP画像をブログのタイトルで自動生成する
- 2022年1月11日Next.js × microCMSでページネーションを自作する
- 2021年11月20日Next.js × microCMSでカテゴリ一覧ページを作る