microCMS

microcms-js-sdkでfetchリクエストオプションが追加できるようになりました

森茂洋

この記事は公開後、1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

microCMSのJavaScript SDKであるmicrocms-js-sdkのv2.5.0をリリースしました。

Releases · microcmsio/microcms-js-sdk

v2.5.0ではcustomRequestInitとしてfetchへリクエストオプションを追加できるようになりました。
Next.jsApp Routerで利用されるfetchcacheオプションを付与することも可能になっています。

従来のバージョンまではjs-sdkを利用せずに独自にfetchを利用いただくか、以下のようにページごとのキャッシュをコントロールするsegment configurationを利用する必要がありました。

export const revalidate = 3600; // revalidate every hour


Building Your Application: Data Fetching | Next.js

今回のアップデートでリクエストごとのキャッシュコントロールが可能になっています。
なお、利用できるオプションについてはNext.jsのドキュメントを参照ください。

Functions: fetch | Next.js

Next.js App Routerでの実装例


// app/page.tsx
import { createClient } from "microcms-js-sdk";

async function getContents() {
 const client = createClient({
  serviceDomain: process.env.MICROCMS_SERVICE_DOMAIN,
  apiKey: process.env.MICROCMS_API_KEY,
 });

 const response = await client.getList({
  customRequestInit: {
   cache: "no-store", // キャッシュを利用せずに常に新しいデータを取得する
  },
  endpoint: "endpoint",
 });

 return response.contents;
}

export default async function Home() {
 const contents = await getContents();
 return (
  <ul>
   {contents.map((item) => {
    return <li key={item.id}>{item.title}</li>;
   })}
  </ul>
 );
}


AbortController

また、AbortControllerも利用が可能です。利用頻度は少ないかもしれませんがリクエストを厳格に制御されたい場合などにご活用ください。

const controller = new AbortController()
const response = await client.getObject({
 customRequestInit: {
  signal: controller.signal
 },
 endpoint: "endpoint",
});

setTimeout(() => {
 controller.abort()
}, 1000)


@amotarao さん、Pull Requestありがとうございました👍

おわりに

今回の仕様追加に関して、フィードバックがございましたら、microCMSユーザーコミュニティ(Discord)や画面右下のチャット欄よりお気軽にご連絡ください!

まずは、無料で試してみましょう。

APIベースの日本製ヘッドレスCMS「microCMS」を使えば、 ものの数分でAPIの作成ができます。

microCMSを無料で始める

microCMSについてお問い合わせ

初期費用無料・14日間の無料トライアル付き。ご不明な点はお気軽にお問い合わせください。

お問い合わせ

microCMS公式アカウント

microCMSは各公式アカウントで最新情報をお届けしています。
フォローよろしくお願いします。

  • X
  • Discord
  • github

ABOUT ME

森茂洋
Web制作、開発会社を経て2022年11月にmicroCMSにジョイン。きっとインターネット老人会に所属しています。インフラやWebに関わる技術の探訪が大好きで興味をもった技術は広く深く掘り下げていくことが信念。microCMSではフロントエンドテックリードとして開発チームのサポートを担当。趣味はサイクリングとアイスホッケー、そして甘いもの。