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 = "Bearer YOUR_TOKEN_HERE"
$zaicoapi_url = "https://web.zaico.co.jp/api/v1/inventories"

# 在庫データ一覧取得
def get_inventories()
    # ページ数の取得
    pages = parse_link_header($zaicoapi_url, headers={'Authorization' => $zaicoapi_token})
    total_pages = pages[:last]

    # 全ページ取得
    puts "在庫データ一覧"
    for i in 1..total_pages.to_i
        $zaicoapi_url << "?pages=#{i}" inventories = RestClient.get($zaicoapi_url, headers={'Authorization' => $zaicoapi_token})
        puts "================================================================="
        puts "#{i}ページ目"
        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ドキュメントをご確認ください。

該当のお客様にはご迷惑をおかけいたしますが、プログラムの改修をお願い致します。

 

今後もみなさまの業務効率化のためにカイゼンを行ってまいりますので、お気づきの改善点やご要望などありましたら是非ご連絡ください!