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 }


あとは取得したいページで呼び出せば、全件取得できます。

参考サイト

About the author

大阪でフロントエンドエンジニアをしています。写真を撮るのが趣味です。よかったら500pxに載せてる写真も見てください。
web上に公開しているので、正確さに可能な限り努力してますが、個人の備忘録程度に書いてるので、ご自身の判断で参考程度に読んでください。
間違いやご意見があれば、コンタクトやSNSに気軽にご連絡ください。

Read next

Category

  • web
  • 雑記