以下以日本樂天市場(Rakuten Ichiba)商品搜索 API為例(樂天不同地區(qū)的電商 API 略有差異,韓國樂天需參考其開放平臺文檔),提供具體調(diào)用示例,包含請求參數(shù)構(gòu)造、簽名生成、代碼實現(xiàn)(Python)及返回結(jié)果解析。
一、前提條件
已在樂天開發(fā)者平臺(日本)注冊賬號,創(chuàng)建應(yīng)用并獲取:
Application ID(API Key)
Secret Key(部分接口需簽名時使用,商品搜索 API 基礎(chǔ)版可僅用 Application ID)
參考樂天官方文檔:商品搜索 API
二、API 基礎(chǔ)信息
接口名稱:商品搜索(IchibaItemSearch)
請求方式:GET
請求地址:https://app.rakuten.co.jp/services/api/IchibaItemSearch/20220601
核心參數(shù):
參數(shù)名 類型 必填 說明
applicationId string 是 開發(fā)者的 Application ID
keyword string 否 搜索關(guān)鍵詞(如 “智能手機(jī)”)
genreId string 否 分類 ID(可通過分類 API 獲取)
page int 否 頁碼,默認(rèn) 1,最大 100
hits int 否 每頁條數(shù),默認(rèn) 30,最大 30
format string 否 返回格式,支持json/xml,默認(rèn)json
三、調(diào)用示例
1. 簡單 curl 調(diào)用(無需簽名)
bash
運行
curl "https://app.rakuten.co.jp/services/api/IchibaItemSearch/20220601?applicationId=你的ApplicationID&keyword=iPhone&hits=10&format=json"
AI寫代碼
2. Python 代碼實現(xiàn)(含簽名,若接口要求)
部分樂天 API(如高級接口)需對請求參數(shù)進(jìn)行 HMAC-SHA256 簽名,以下示例包含參數(shù)排序、簽名生成、請求發(fā)送完整流程:
python
運行
import requests
import hashlib
import hmac
import time
from urllib.parse import urlencode, quote_plus
# 配置信息
APPLICATION_ID = "你的ApplicationID"
SECRET_KEY = "你的SecretKey"
API_URL = "https://app.rakuten.co.jp/services/api/IchibaItemSearch/20220601"
# 構(gòu)造請求參數(shù)
params = {
? ? "applicationId": APPLICATION_ID,
? ? "keyword": "iPhone 15",
? ? "hits": 5,
? ? "page": 1,
? ? "format": "json",
? ? "timestamp": str(int(time.time()))? # 部分接口需時間戳防重放
}
# 步驟1:按參數(shù)名ASCII升序排序
sorted_params = sorted(params.items(), key=lambda x: x[0])
# 步驟2:拼接參數(shù)為"key=value&key=value"格式(值需URL編碼)
param_string = "&".join([f"{k}={quote_plus(str(v))}" for k, v in sorted_params])
# 步驟3:生成簽名(HMAC-SHA256)
signature = hmac.new(
? ? SECRET_KEY.encode("utf-8"),
? ? param_string.encode("utf-8"),
? ? hashlib.sha256
).hexdigest()
# 步驟4:添加簽名到參數(shù)
params["signature"] = signature
# 發(fā)送請求
response = requests.get(API_URL, params=params)
result = response.json()
# 打印結(jié)果
print("請求URL:", response.url)
print("\n返回數(shù)據(jù):")
for item in result.get("Items", []):
? ? item_info = item["Item"]
? ? print(f"商品名稱:{item_info['itemName']}")
? ? print(f"價格:{item_info['itemPrice']}日元")
? ? print(f"商品鏈接:{item_info['itemUrl']}\n")
AI寫代碼
四、返回結(jié)果解析(JSON 示例)
json
{
? "Items": [
? ? {
? ? ? "Item": {
? ? ? ? "itemCode": "123456789",
? ? ? ? "itemName": "iPhone 15 256GB ブルー SIMフリー",
? ? ? ? "itemPrice": 128000,
? ? ? ? "itemUrl": "https://item.rakuten.co.jp/shop/iphone15/",
? ? ? ? "shopName": "樂天官方旗艦店",
? ? ? ? "stock": true,
? ? ? ? "imageUrl": "https://thumbnail.image.rakuten.co.jp/..."
? ? ? }
? ? }
? ],
? "count": 1,
? "page": 1,
? "hits": 5,
? "totalCount": 1200
}
AI寫代碼
關(guān)鍵字段說明:
Items:商品列表數(shù)組
itemName:商品名稱(含規(guī)格)
itemPrice:商品價格(日元,韓國樂天為韓元)
itemUrl:商品詳情頁鏈接
stock:庫存狀態(tài)(true為有貨)
五、常見錯誤及解決
錯誤碼 原因 解決方法
401 Application ID 無效 檢查開發(fā)者后臺的應(yīng)用 ID 是否正確
403 權(quán)限不足 / 簽名錯誤 確認(rèn) API 權(quán)限已開通,或簽名生成邏輯有誤
429 調(diào)用頻率超限 降低請求頻次,或申請?zhí)嵘漕~
500 服務(wù)器內(nèi)部錯誤 稍后重試,或聯(lián)系樂天開發(fā)者支持
注意事項
樂天日本 / 韓國 / 全球版 API 的端點和參數(shù)略有差異,需以對應(yīng)地區(qū)的開放平臺文檔為準(zhǔn);
商品價格、庫存等數(shù)據(jù)為實時動態(tài),需定期調(diào)用更新;
商用場景需遵守樂天 API 的使用條款(如禁止爬蟲批量抓取、數(shù)據(jù)商用授權(quán))。
如有疑問請聯(lián)系我或評論。