ZAICO API在庫一覧取得方法が変わります
2019/03/29
2019年5月8日よりZAICO APIでの在庫一覧取得において下記のように改修致します。
改修前
全在庫データを一度に返します。
改修後
【データ取得】
在庫データが1000件を超える場合、1000件ごとに分割してデータを返します。
1001件目以降の在庫データはページネーションにて取得可能です。
【HTTPヘッダの追加】
ZAICO APIへページネーション機能追加のため下記の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ドキュメントをご確認ください。
該当のお客様にはご迷惑をおかけいたしますが、プログラムの改修をお願い致します。
今後もみなさまの業務効率化のためにカイゼンを行ってまいりますので、お気づきの改善点やご要望などありましたら是非ご連絡ください!