电子说
在现代电商开发中,获取店铺商品列表是常见需求,京东平台通过其开放API提供了高效的数据访问接口。本技术帖将详细介绍如何通过京东API获取店铺商品列表,包括接口概述、准备工作、调用步骤、代码示例及注意事项。内容基于京东开放平台的实际文档,确保真实可靠。
1. 引言
京东开放平台(Jingdong Open Platform)为开发者提供了一系列API,用于集成京东电商功能。其中,获取店铺商品列表的接口允许开发者查询指定店铺的商品信息,这对于构建第三方应用、数据分析或库存管理系统至关重要。通过RESTful API设计,开发者可以使用HTTP请求获取JSON格式的响应数据。
2. API概述
京东的店铺商品列表API通常通过HTTP GET或POST方法调用,需要认证和参数传递。核心端点一般为京东API网关,例如 https://api.jd.com/routerjson。主要参数包括:
method: 指定接口方法名,如 jingdong.shop.getGoodsList。
app_key: 开发者应用的唯一标识。
access_token: OAuth2.0认证后的访问令牌。
timestamp: 请求时间戳,用于签名验证。
sign: 基于参数生成的签名,确保安全。
其他参数:如店铺ID(shop_id)、分页参数(page和page_size)。
响应数据为JSON格式,包含商品列表、总数等信息。例如:
{
"code": 0,
"message": "success",
"data": {
"total": 100,
"goods_list": [
{"goods_id": "123", "name": "商品A", "price": 99.99},
{"goods_id": "456", "name": "商品B", "price": 199.99}
]
}
}

3. 准备工作
在调用API前,开发者需完成以下步骤:
注册京东开发者账号:访问京东开放平台官网(如 open.jd.com),注册并创建应用,获取 app_key 和 app_secret。
获取访问令牌:通过OAuth2.0流程,用户授权后生成 access_token。示例流程:
用户重定向到京东授权页面。
授权后,京东返回授权码。
用授权码交换 access_token。
设置开发环境:确保有HTTP客户端库,如Python的 requests 库。
4. 调用API步骤
以下是调用获取店铺商品列表API的详细步骤:
构建请求参数:包括方法名、认证参数和业务参数。
生成签名:使用 app_secret 对所有参数排序后计算签名,算法通常为MD5或SHA256。
发送HTTP请求:使用GET或POST方法发送请求到API端点。
处理响应:解析JSON响应,检查状态码(如 code=0 表示成功),提取商品列表。
签名生成示例:假设参数为 method=jingdong.shop.getGoodsList&app_key=test_key×tamp=1620000000,签名公式为: $$ text{sign} = text{MD5}(text{app_secret} + text{sorted_params} + text{app_secret}) $$
5. 代码示例
以下Python代码演示如何调用京东API获取店铺商品列表。使用 requests 库发送请求。
import requests
import hashlib
import time
import urllib.parse
def get_jd_goods_list(shop_id, access_token, app_key, app_secret, page=1, page_size=10):
# 基础API端点
api_url = "https://api.jd.com/routerjson"
# 构建请求参数
params = {
"method": "jingdong.shop.getGoodsList",
"app_key": app_key,
"access_token": access_token,
"timestamp": str(int(time.time())),
"shop_id": shop_id,
"page": page,
"page_size": page_size
}
# 生成签名:先排序参数,然后计算MD5
sorted_params = sorted(params.items(), key=lambda x: x[0])
query_string = urllib.parse.urlencode(sorted_params)
sign_str = app_secret + query_string + app_secret
sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest()
params["sign"] = sign
# 发送GET请求
response = requests.get(api_url, params=params)
if response.status_code == 200:
data = response.json()
if data.get("code") == 0:
return data["data"]["goods_list"]
else:
raise Exception(f"API error: {data.get('message')}")
else:
raise Exception(f"HTTP error: {response.status_code}")
# 示例调用
if __name__ == "__main__":
app_key = "your_app_key" # 替换为实际值
app_secret = "your_app_secret"
access_token = "your_access_token"
shop_id = "123456" # 店铺ID
try:
goods_list = get_jd_goods_list(shop_id, access_token, app_key, app_secret)
print("商品列表:", goods_list)
except Exception as e:
print("错误:", str(e))

6. 注意事项
频率限制:京东API通常有调用频率限制(如每分钟100次),超出会返回错误。建议使用缓存或异步处理。
错误处理:常见错误码包括 1001(认证失败)、2001(参数无效)。需在代码中处理异常。
数据安全:app_secret 和 access_token 需保密存储,避免泄露。
版本兼容:京东API可能更新,开发者应定期检查文档(如 open.jd.com 的API参考)。
测试环境:先用沙盒环境测试,避免影响生产数据。
7. 结论
通过京东平台的API接口获取店铺商品列表,开发者能高效集成电商数据。本技术帖提供了从注册到代码实现的完整指南。未来,建议探索更多API如商品详情或订单管理,以构建更强大的应用。京东API文档是权威参考源,开发者应定期查阅更新。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !