対象のプラン
- 無料
- ミニマム
- ライト
- フル
対象の端末
- Web
- iPhone
- Android
zaico APIで在庫データが1,000件を超える場合、1,000件ごとに分割してデータを返します。
1,001件目以降の在庫データはページネーションにて取得可能です。
また、ページネーション機能では下記のHTTPヘッダを参照することができます。
- Linkヘッダ
現在のページ、前のページ、次のページ、最後のページを返します。 - Total-Count
全在庫データの件数を返します。
サンプルプログラム
require 'net/http'
require 'rest-client'
require 'json'
# APIの設定
$zaicoapi_token = "YOUR_TOKEN_HERE"
$zaicoapi_url = "https://web.zaico.co.jp/api/v1/inventories"
# 在庫データ一覧取得
def get_inventories()
# ページ数の取得
pages = parse_link_header($zaicoapi_url, headers={'Authorization' => 'Bearer ' + $zaicoapi_token})
total_pages = pages[:last] # 全ページ取得
puts "在庫データ一覧"
for i in 1..total_pages.to_i
pagenation_url = $zaicoapi_url + "?page=#{i}"
inventories = RestClient.get(pagenation_url, headers={'Authorization' => 'Bearer ' + $zaicoapi_token})
puts "================================================================="
puts "#{i}ページ目"
puts pagenation_url
puts "================================================================="
puts "------------------"
JSON.parse(inventories.body).each do |inventory|
puts "Inventory ID: " + inventory["id"].to_s
puts "Title: " + inventory["title"]
puts "Quantity: " + inventory["quantity"].to_s
puts "------------------"
end
puts ""
end
end
def parse_link_header(url, headers={})
response = RestClient.get(url, headers)
pages = Hash.new
parts = response.headers[:link].split(',')
# Parse each part into a named link
parts.each do |part, index|
section = part.split(';')
page_number = section[0].match(/page=(\d+).*$/)[1]
name = section[1][/rel="(.*)"/,1].to_sym
pages[name] = page_number
end
return pages
end
if __FILE__ == $0
get_inventories()
end
詳細な応答についてはzaico APIドキュメントをご確認ください。