Sim:listSims API などの last_evaluated_key を指定できる API では、多くの情報を効率よく取得するためにページに分割して情報を取得します。これをページングと呼びます。
たとえば、多くの IoT SIM を所有している場合、Sim:listSims API を利用して IoT SIM の一覧を取得すると、1 回目の呼び出しではすべてのデータは取得できず、1 ページ目のデータだけが取得できます。残りの IoT SIM の情報 (2 ページ目) を取得するには、1 ページ目のデータとともに返された情報 (具体的には、link ヘッダーまたは x-soracom-next-key ヘッダーの値) を指定して、もう一度同じ API を呼びます。
ここでは、3 ページ以上の IoT SIM を持っているとして、Sim:listSims API ですべての IoT SIM の情報を取得する方法を説明します。
limit は最大データ数を減らすためのパラメータです
ページングが行われる API では limit で上限を設定できることがありますが、limit は最大データ数を減らすためのパラメータです。つまり、すべてのデータが取得できないときに limit でより大きな値を設定したとしても、取得できるデータは変わりません。すべてのデータを取得できなかった場合は、このページの説明を参考にして、ページごとにデータを取得してください。
API によっては link ヘッダーまたは x-soracom-next-key ヘッダーの片方だけが含まれることがあります
API によっては、link ヘッダーまたは x-soracom-next-key ヘッダーの片方だけが含まれることがあります。どちらを利用しても同じ結果が得られます。
Sim:listSims API に限らず、last_evaluated_key を指定できる API は同様の操作ですべての情報を取得できます。
API キーと API トークンを発行します。
詳しくは、API キーと API トークンの取り扱いについて を参照してください。
Sim:listSims APIを呼び出します。1 ページ目のデータが取得できます。
$ curl -i -X GET https://g.api.soracom.io/v1/sims \ -H "X-Soracom-API-Key: $X_SORACOM_API_KEY" \ -H "X-Soracom-Token: $X_SORACOM_TOKEN"HTTP/2 200 date: Tue, 06 Jun 2023 07:04:19 GMT content-type: application/json cache-control: no-cache link: </v1/sims?last_evaluated_key=1234567890123456780>; rel=next vary: Accept-Encoding x-soracom-next-key: 1234567890123456780 x-soracom-ratelimit-limit: 1000 x-soracom-ratelimit-remaining: 999 x-soracom-ratelimit-seconds-before-refresh: 60 [{"operatorId":"OP1234567890","...},{"operatorId":"OP1234567890","...},...]次のページが存在する場合は、
linkヘッダーまたはx-soracom-next-keyヘッダーに、次のページを取得するための情報が返されます。各ヘッダーで返された値を使って同じ API を呼び出すと次のページを取得できます。linkヘッダーの場合は、link: </v1/sims?last_evaluated_key=1234567890123456780>; rel=nextの1234567890123456780を使います。x-soracom-next-keyヘッダーの場合は、x-soracom-next-key: 1234567890123456780の1234567890123456780を使います。
API によっては
linkヘッダーにrel=prevが出力される場合がありますAPI によっては、
linkヘッダーに以下のようにrel=prevとrel=nextが出力される場合があります。link: <xxxxx>; rel=prev, <yyyyy>; rel=nextrel=nextの前に出力される情報 (上記の例ではxxxxx) は、同じ条件で現在のページを再取得するための情報 (API を呼び出したときに指定した内容) です。rel=prevの前に出力される情報 (上記の例では、yyyyy) は、同じ条件で次のページを取得するための情報を取得するための情報です。ヘッダーから取得した
1234567890123456780をlast_evaluated_keyの値に指定して、もう一度Sim:listSims APIを呼び出します。2 ページ目のデータが取得できます。
$ curl -i -X GET https://g.api.soracom.io/v1/sims?last_evaluated_key=1234567890123456780 \ -H "X-Soracom-API-Key: $X_SORACOM_API_KEY" \ -H "X-Soracom-Token: $X_SORACOM_TOKEN"HTTP/2 200 date: Tue, 06 Jun 2023 07:11:25 GMT content-type: application/json cache-control: no-cache link: </v1/sims?last_evaluated_key=1234567890123456781>; rel=next vary: Accept-Encoding x-soracom-next-key: 1234567890123456781 x-soracom-ratelimit-limit: 1000 x-soracom-ratelimit-remaining: 998 x-soracom-ratelimit-seconds-before-refresh: 46 [{"operatorId":"OP1234567890","...},{"operatorId":"OP1234567890","...},...]1 回目と同様に、次のページが存在する場合は、
linkヘッダーまたはx-soracom-next-keyヘッダーに、次のページを取得するための情報が返されます。各ヘッダーで返された値を使って同じ API を呼び出すと次のページを取得できます。last_evaluated_key 以外の条件を変えないでください
ページングは、多くの情報を効率よく取得するためにページに分割して情報を取得するための機能です。条件を変えると、意図した分割ではないレスポンスが生成されることがあります。
last_evaluated_key以外の条件を変えないでください。最後のページを取得するまで同じ操作を繰り返します。
最後のページを取得したときは、レスポンスヘッダーに
linkヘッダーおよびx-soracom-next-keyヘッダーが含まれません。$ curl -i -X GET https://g.api.soracom.io/v1/sims?last_evaluated_key=1234567890123456781 \ -H "X-Soracom-API-Key: $X_SORACOM_API_KEY" \ -H "X-Soracom-Token: $X_SORACOM_TOKEN"HTTP/2 200 date: Tue, 06 Jun 2023 07:21:53 GMT content-type: application/json cache-control: no-cache vary: Accept-Encoding x-soracom-ratelimit-limit: 1000 x-soracom-ratelimit-remaining: 997 x-soracom-ratelimit-seconds-before-refresh: 39 [{"operatorId":"OP1234567890","...},{"operatorId":"OP1234567890","...},...]