
Next.js × microCMSで記事を全件取得する
2023/05/09
2023/05/10
Next.js × microCMSで記事を全件取得する方法です。
microCMSのデフォルトでは10件までしか記事を取得することができません。
記事の取得数を指定するメソッドの作成
GETメソッドの引数の中にlimitを設定します。以下では100件取得できるようにしています。
件数の上限値はないようですが、公式サイトによるとレスポンスサイズが5MBを超えるとエラーになるようです。
libs/client.js
import { createClient } from 'microcms-js-sdk';
export const client = createClient({
serviceDomain: process.env.NEXT_PUBLIC_SERVICE_DOMAIN,
apiKey: process.env.NEXT_PUBLIC_API_KEY,
});
export const getAllContents = async (limit = 100, offset = 0) => {
const data = await client.get({
endpoint: 'blog',
queries: {
offset,
limit,
},
});
return data.contents;
};作成したメソッドを適用
上記で作成したメソッドを一覧画面と、記事詳細画面で使用します。
index.tsx
〜省略
export const getStaticProps = async () => {
const contents = await getAllContents();
return {
props: {
blog: contents,
},
};
};
blog/[id].tsx
〜省略
export const getStaticPaths = async () => {
const contents = await getAllContents();
const paths = contents.map((content: { id: string }) => `/blog/${content.id}`);
return { paths, fallback: false };
};
export const getStaticProps = async (context: { params: { id: string } }) => {
const id = context.params.id;
const data = await client.get({ endpoint: 'blog', contentId: id });
return {
props: {
blog: data,
},
};
};参考資料
リスト形式のAPIでGET APIから10件しかコンテンツを取得できません
【2023】microCMSでAPI GET request数が10件だったのを100件に変更した