以下以日本乐天市场(Rakuten Ichiba)商品搜索 API为例(乐天不同地区的电商 API 略有差异,韩国乐天需参考其开放平台文档),提供具体调用示例,包含请求参数构造、签名生成、代码实现(Python)及返回结果解析。

相关服务:日本服务器租用

一、前提条件

  1. 已在乐天开发者平台(日本)注册账号,创建应用并获取:
    • Application ID(API Key)
    • Secret Key(部分接口需签名时使用,商品搜索 API 基础版可仅用 Application ID)
  2. 参考乐天官方文档:商品搜索 API

二、API 基础信息

  • 接口名称:商品搜索(IchibaItemSearch)
  • 请求方式:GET
  • 请求地址:https://app.rakuten.co.jp/services/api/IchibaItemSearch/20220601
  • 核心参数:
    参数名类型必填说明
    applicationIdstring是开发者的 Application ID
    keywordstring否搜索关键词(如 “智能手机”)
    genreIdstring否分类 ID(可通过分类 API 获取)
    pageint否页码,默认 1,最大 100
    hitsint否每页条数,默认 30,最大 30
    formatstring否返回格式,支持json/xml,默认json

三、调用示例

1. 简单 curl 调用(无需签名)

bash

运行

curl "https://app.rakuten.co.jp/services/api/IchibaItemSearch/20220601?applicationId=你的ApplicationID&keyword=iPhone&hits=10&format=json"
2. Python 代码实现(含签名,若接口要求)

部分乐天 API(如高级接口)需对请求参数进行 HMAC-SHA256 签名,以下示例包含参数排序、签名生成、请求发送完整流程:

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"

# 构造请求参数
params = {
    "applicationId": APPLICATION_ID,
    "keyword": "iPhone 15",
    "hits": 5,
    "page": 1,
    "format": "json",
    "timestamp": str(int(time.time()))  # 部分接口需时间戳防重放
}

# 步骤1:按参数名ASCII升序排序
sorted_params = sorted(params.items(), key=lambda x: x[0])

# 步骤2:拼接参数为"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:添加签名到参数
params["signature"] = signature

# 发送请求
response = requests.get(API_URL, params=params)
result = response.json()

# 打印结果
print("请求URL:", response.url)
print("\n返回数据:")
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")

四、返回结果解析(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
}

关键字段说明:

  • Items:商品列表数组
  • itemName:商品名称(含规格)
  • itemPrice:商品价格(日元,韩国乐天为韩元)
  • itemUrl:商品详情页链接
  • stock:库存状态(true为有货)

五、常见错误及解决

错误码原因解决方法
401Application ID 无效检查开发者后台的应用 ID 是否正确
403权限不足 / 签名错误确认 API 权限已开通,或签名生成逻辑有误
429调用频率超限降低请求频次,或申请提升配额
500服务器内部错误稍后重试,或联系乐天开发者支持

注意事项

  1. 乐天日本 / 韩国 / 全球版 API 的端点和参数略有差异,需以对应地区的开放平台文档为准;
  2. 商品价格、库存等数据为实时动态,需定期调用更新;
  3. 商用场景需遵守乐天 API 的使用条款(如禁止爬虫批量抓取、数据商用授权)。

    乐天电商商品数据 API 的具体调用示例




    如有疑问请联系我或评论。