一、接口概述
1688开放平台提供alibaba.category.get接口,支持开发者获取全量商品类目树。该接口采用RESTful架构,返回JSON格式数据,包含以下核心字段:
categoryId:类目唯一标识符
name:类目中文名称
level:类目层级(1-5级)
parentId:父类目ID
isLeaf:是否叶子类目
二、请求准备
需提前完成:
注册1688开放平台账号
创建应用获取app_key和app_secret
申请"商品类目接口"权限
安装HTTP请求库(示例使用Python)
import requests
import hashlib
import time
认证参数
app_key = "YOUR_APP_KEY"
app_secret = "YOUR_APP_SECRET"
三、请求构造
基础参数
params = {
"method": "alibaba.category.get",
"app_key": app_key,
"timestamp": str(int(time.time() * 1000)), # 精确到毫秒
"format": "json",
"v": "2.0",
"sign_method": "md5"
}签名生成
签名算法: $$ \text{sign} = \text{md5}(\text{app_secret} + \text{sorted_params} + \text{app_secret}) $$
def generate_sign(params, app_secret):
param_str = ''.join([f"{k}{v}" for k,v in sorted(params.items())])
sign_str = app_secret + param_str + app_secret
return hashlib.md5(sign_str.encode()).hexdigest().upper()
params["sign"] = generate_sign(params, app_secret)
四、请求示例
url = "https://gw.open.1688.com/openapi/param2/2/portals.open/api/getCategory"
response = requests.get(url, params=params)
if response.status_code == 200:
data = response.json()
# 解析类目树结构 def parse_category(categories, level=0): for cat in categories: print(f"{' '*level}[L{cat['level']}] {cat['name']} (ID:{cat['categoryId']})") if "children" in cat: parse_category(cat["children"], level+1) parse_category(data["result"]["categories"]) else:
print(f"请求失败: {response.status_code}")
五、返回数据结构示例
{
"result": {
"categories": [
{
"categoryId": 1,
"name": "工业品",
"level": 1,
"children": [
{
"categoryId": 1001,
"name": "工具",
"level": 2,
"isLeaf": false
}
]
}
]
}
}
六、注意事项
频率限制:单应用$QPS \leq 10$,日调用量$ \leq 50,000$次
缓存策略:建议本地缓存类目数据(更新周期$T \geq 24h$)
错误代码:
$400$:参数校验失败
$403$:权限不足
$500$:服务端异常
叶子类目判断:当isLeaf=true时不可继续下钻
有任何疑问,欢迎大家留言探讨。