1. ヘルプ
  2. 機能
  3. コンテンツAPI(GET)

APIへのリクエストで429エラーが返却される場合の対処法は?

→ リクエスト数を制限するか、リトライ処理を組み入れてください。

時間あたりのAPIリクエスト数が、APIの呼び出し回数に関する制限を超えた場合、ステータスコード429(Too Many Requests)が返却されます。

429エラーの回避方法としては、以下の2つの方法が考えられます。

1. リクエスト数を制限する

リクエスト処理自体を制限し、秒間に送られるリクエスト数を60件以下にする方法です。

例えば「Promise Throttle」のようなサードパーティライブラリを利用して、リクエスト数を制限する方法が考えられます。

フレームワークを利用している場合には、フレームワークの設定値を変更することによって、同時実行数を抑えたり、リクエスト間隔を設けることで、リクエスト数を制限する方法が考えられます。

Next.js

以下の設定を行い、ビルド時の並列実行を制限することで、時間あたりのリクエスト数を制限することができます。

// Next.jsの設定ファイル(next.config.js)
...
experimental: {
  workerThreads: false,
  cpus: 1
},
...

Nuxt3

concurrencyの値を低く設定し、intervalの値を大きくすることで、時間あたりのリクエスト数を制限することができます。

// Nuxt3の設定ファイル (nuxt.config.js)
export default defineNuxtConfig({
nitro: {
prerender: {
concurrency: 100, // 1スレッドで実行されるルートの数
interval: 1000, //ページ生成の際のディレイ(ミリ秒)
}
}
})

Nuxt2

concurrencyの値を低く設定し、intervalの値を大きくすることで、時間あたりのリクエスト数を制限することができます。

// Nuxt2の設定ファイル (nuxt.config.js)
...
generate: {
concurrency: 100, // 1スレッドで実行されるルートの数
interval: 1000, //ページ生成の際のディレイ(ミリ秒)
},
...

2. リトライ処理を追加する

リクエストの失敗時に備え、リトライ処理を追加する方法です。
サードパーティのリトライライブラリなどを併用することで実装します。

JavaScript用のSDKにでは、オプションの機能として、リトライ処理を有効化することが可能です。詳しくは以下の記事をご参照ください。

▼ microcms-js-sdkにリトライオプションが追加されました
https://blog.microcms.io/js-sdk-retry-option/


APIの呼び出し回数に関する制限は、オリジンへのアクセスが1秒間に60回以上行われた場合に限ります。ですので、CDNのキャッシュが使用されたときはこの制限にはあたりません。