京东API分类接口实战指南:获取各类商品信息
一、核心接口与权限准备
-
核心API接口
-
接口名称:
jingdong.category.read.find
(京东商品分类获取接口) -
功能:通过父分类ID获取子分类信息,支持构建分类树。
-
请求参数:
parentId
:父分类ID,默认为0(根分类)。grade
:分类级别(0为一级分类,1为二级,2为三级)。
-
-
权限申请流程
- 步骤1:注册京东开放平台企业账号,提交资质材料(营业执照、法人身份证扫描件)。
- 步骤2:创建应用,选择“商品详情”或“分类信息”相关API权限包。
- 步骤3:等待审核通过后,获取
AppKey
和AppSecret
,用于后续API调用。
二、API调用实战步骤
1. 生成签名(关键安全步骤)
python
体验AI代码助手
代码解读
复制代码
python 体验AI代码助手 代码解读 复制代码 python import hashlib def generate_sign(params, app_secret): # 按参数名ASCII升序排序 sorted_params = sorted(params.items(), key=lambda x: x[0]) # 拼接字符串并加密 sign_str = app_secret + ''.join([f"{k}{v}" for k, v in sorted_params]) + app_secret return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
2. 调用分类接口示例
python
体验AI代码助手
代码解读
复制代码
python 体验AI代码助手 代码解读 复制代码 python import requests import time class JDAPI: def __init__(self, app_key, app_secret): self.app_key = app_key self.app_secret = app_secret self.api_url = "https://api.jd.com/routerjson" def call(self, method, params=None): # 公共参数 common_params = { "app_key": self.app_key, "method": method, "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), "format": "json", "v": "2.0", "sign_method": "md5" } # 合并参数并生成签名 all_params = {**common_params, **(params or {})} all_params["sign"] = generate_sign(all_params, self.app_secret) # 发送请求 response = requests.post(self.api_url, data=all_params) return response.json() class JDCategoryAPI(JDAPI): def get_categories(self, parent_id=0): return self.call("jingdong.category.read.find", {"parentId": parent_id}) # 使用示例 app_key = "YOUR_APP_KEY" # 替换为实际AppKey app_secret = "YOUR_APP_SECRET" # 替换为实际AppSecret api = JDCategoryAPI(app_key, app_secret) categories = api.get_categories(parent_id=0) # 获取一级分类 print(categories)
3. 高级参数示例(精准筛选)
ini
体验AI代码助手
代码解读
复制代码
ini 体验AI代码助手 代码解读 复制代码 python # 获取二级分类(父分类ID为1342) categories_level2 = api.get_categories(parent_id=1342) # 获取三级分类(父分类ID为1562) categories_level3 = api.get_categories(parent_id=1562)
三、响应数据解析
- 典型响应结构:
css
体验AI代码助手
代码解读
复制代码
css 体验AI代码助手 代码解读 复制代码 json { "jd_category_read_find_response": { "code": "0", "categoryList": [ { "categoryId": "1342", "name": "手机", "parentId": "0", "grade": "0" }, { "categoryId": "1562", "name": "笔记本电脑", "parentId": "0", "grade": "0" } ] } }
-
关键字段说明:
categoryId
:分类唯一标识符name
:分类名称parentId
:父分类IDgrade
:分类级别(0/1/2对应一/二/三级)
四、常见问题与解决方案
-
签名失败
- 原因:参数排序错误或时间戳格式不正确。
- 解决:检查参数是否按ASCII升序排列,时间戳格式为
YYYY-MM-DD HH:mm:ss
。
-
权限不足
- 原因:应用未申请分类API权限。
- 解决:登录开放平台检查权限配置,提交权限升级申请。
-
数据为空
- 原因:父分类ID错误。
- 解决:确认父分类ID有效性,或尝试使用
parentId=0
获取根分类。
-
频率限制
- 原因:触发京东API限流(QPS限制通常为50次/秒)。
- 解决:使用队列(如Celery)管理请求,或申请提高QPS限额。
五、实战优化建议
- 安全存储:将
AppSecret
存入环境变量或加密数据库(如Vault)。 - 异步处理:批量请求时采用分页机制,结合异步任务提高效率。
- 日志监控:记录每次API调用的请求参数、响应状态码及耗时,便于排查问题。
- 缓存策略:对不常变动的分类数据实施本地缓存,减少API调用次数。
通过以上步骤,您可系统化实现京东商品分类信息的获取与处理。如需进一步集成至ERP或数据分析系统,可结合数据库存储(如MySQL)与可视化工具(如Tableau)完成全链路管理。
作者:onelafite
链接:https://juejin.cn/post/7542164564231536686
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。