京东商品详情接口 item_get API 实战演示
京东平台提供了多种API接口,其中商品详情接口(item_get)是常用的接口之一。下面我将演示如何使用这个接口获取京东商品详情信息。
一. 准备工作
在使用京东API之前,你需要:
- 注册开放平台账号
- 创建应用,获取App Key和App Secret
- 申请相关API权限
二. 接口基本信息
- 接口名称:商品详情查询(item_get)
- 请求方式:HTTP GET/POST
- 请求地址:api.jd.com/routerjson
三. 请求参数
名称 | 类型 | 必须 | 描述 |
---|---|---|---|
key | String | 是 | 调用key(必须以GET方式拼接在URL中) |
secret | String | 是 | 调用密钥 |
api_name | String | 是 | API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等] |
cache | String | 否 | [yes,no]默认yes,将调用缓存的数据,速度比较快 |
result_type | String | 否 | [json,jsonu,xml,serialize,var_export]返回数据格式,默认为json,jsonu输出的内容中文可以直接阅读 |
lang | String | 否 | [cn,en,ru]翻译语言,默认cn简体中文 |
version | String | 否 | API版本 |
四:业务参数(json)示例
{
"goodsReq": {
"skuIds": "123456,789012",
"fields": "skuId,skuName,price,imageUrl"
}
}
五. 实战演示代码(Python)
import requests
import hashlib
import time
import json
import urllib.parse
# 配置信息
app_key = "YOUR_APP_KEY"
app_secret = "YOUR_APP_SECRET"
api_url = "https://api.jd.com/routerjson"
def get_jd_item(sku_id):
# 公共参数
method = "jd.union.open.goods.query"
timestamp = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
format = "json"
v = "1.0"
sign_method = "md5"
# 业务参数
param_json = {
"goodsReq": {
"skuIds": str(sku_id),
"fields": "skuId,skuName,price,couponInfo,imageUrl,shopInfo,brandName,cid1,cid2,cid3"
}
}
param_json_str = json.dumps(param_json)
# 生成签名
sign_str = app_secret + "app_key" + app_key + "format" + format + "method" + method + "param_json" + param_json_str + "timestamp" + timestamp + "v" + v + app_secret
sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
# 请求参数
params = {
"method": method,
"app_key": app_key,
"timestamp": timestamp,
"format": format,
"v": v,
"sign_method": sign_method,
"param_json": param_json_str,
"sign": sign
}
# 发送请求
try:
response = requests.get(api_url, params=params)
result = response.json()
return result
except Exception as e:
print(f"请求失败: {e}")
return None
# 使用示例
if __name__ == "__main__":
# 查询京东商品(示例SKU: 100003406693)
sku_id = "100003406693"
item_data = get_jd_item(sku_id)
if item_data and item_data.get("jd_union_open_goods_query_responce"):
result = json.loads(item_data["jd_union_open_goods_query_responce"]["queryResult"])
if result["code"] == 200:
goods_info = result["data"][0]
print("商品信息获取成功:")
print(f"商品ID: {goods_info['skuId']}")
print(f"商品名称: {goods_info['skuName']}")
print(f"商品价格: {goods_info['price']}元")
print(f"商品图片: {goods_info['imageUrl']}")
print(f"店铺信息: {goods_info['shopInfo']['shopName'] if 'shopInfo' in goods_info else '无'}")
else:
print(f"获取商品信息失败: {result['message']}")
else:
print("请求失败,请检查参数和网络连接")
6. 常见问题及解决方案
- 签名错误:确保签名算法正确,参数顺序无误,App Secret正确
- 权限不足:检查是否申请了对应API权限
- 频率限制:京东API有调用频率限制,需合理控制请求频率
- 参数错误:确保必填参数都已填写,格式正确
希望这个实战演示对你有所帮助!如果有任何问题,欢迎留言谈论