はじめに
OpenTextのデータ取得をおこなうAPI作成中に取得条件のlimitを1000件に設定しデータ取得しようとしていましたが、何故か1000ではなく100に変換されてしまう事象が発生しました。
以下画像のようにPostManで確認してみるとlimitが1000ではなく100と表示されています。
原因
調べてみると、現在パフォーマンス改善のためにページあたり 100件取得に制限されているようでした。
解決
limitを最大数の100に設定し、取得したいデータの分割数である"page_total”を取得後
その回数リクエストを投げ格納するという方法に落ち着きました。
public JSONObject getClassifiedItems(String objId) {
JSONObject result = null;
JSONObject infoObject = null;
JSONArray itemList = new JSONArray();
List<NameValuePair> params = new LinkedList<>();
//limitを100に設定
infoObject = httpGetJson("api/v2/classifieditems/?sort=asc_type&limit=100",
new UrlEncodedFormEntity(params, "UTF-8"),
getHeaders());
// page数取得
int pageCnt = infoObject.getJSONObject("collection").getJSONObject("paging").getInt("page_total");
//page数分データを取得し、配列に格納
for (int i = 0; i < pageCnt; i++) {
String pageCntValue = String.valueOf(i + 1);
result = httpGetJson("api/v2/classifieditems/" + objId + "?sort=asc_type&page=" + pageCntValue,
new UrlEncodedFormEntity(params, "UTF-8"),
getHeaders());
JSONArray aitemList = result.getJSONObject("results").getJSONArray("contents");
System.out.println("aitemList:" + aitemList);
//取得したデータ格納
for (int j = 0; j < aitemList.length(); j++) {
itemList.put(itemList.length(), aitemList.getJSONObject(j));
}
JSONObject oItemList = new JSONObject();
return oItemList;
}