1
0

More than 1 year has passed since last update.

[OpenText]データ取得で100件以上のデータが取得できない場合の対処

Last updated at Posted at 2022-11-29

はじめに

OpenTextのデータ取得をおこなうAPI作成中に取得条件のlimitを1000件に設定しデータ取得しようとしていましたが、何故か1000ではなく100に変換されてしまう事象が発生しました。
以下画像のようにPostManで確認してみるとlimitが1000ではなく100と表示されています。
Untitled.png

原因

調べてみると、現在パフォーマンス改善のためにページあたり 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;
	}

参考文献

https://forums.opentext.com/forums/developer/discussion/309446/is-there-a-fixed-result-limit-via-rest

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0