京东商品详情接口 item_get API (实战演示)

9 阅读3分钟

京东商品详情接口 item_get API 实战演示
京东平台提供了多种API接口,其中商品详情接口(item_get)是常用的接口之一。下面我将演示如何使用这个接口获取京东商品详情信息。

一. 准备工作
在使用京东API之前,你需要:

  1. 注册开放平台账号
  2. 创建应用,获取App Key和App Secret
  3. 申请相关API权限

二. 接口基本信息

  • 接口名称:商品详情查询(item_get)
  • 请求方式:HTTP GET/POST
  • 请求地址:api.jd.com/routerjson

三. 请求参数

名称类型必须描述
keyString调用key(必须以GET方式拼接在URL中)
secretString调用密钥
api_nameStringAPI接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]
cacheString[yes,no]默认yes,将调用缓存的数据,速度比较快
result_typeString[json,jsonu,xml,serialize,var_export]返回数据格式,默认为json,jsonu输出的内容中文可以直接阅读
langString[cn,en,ru]翻译语言,默认cn简体中文
versionStringAPI版本

四:业务参数(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. 常见问题及解决方案

  1. 签名错误:确保签名算法正确,参数顺序无误,App Secret正确
  2. 权限不足:检查是否申请了对应API权限
  3. 频率限制:京东API有调用频率限制,需合理控制请求频率
  4. 参数错误:确保必填参数都已填写,格式正确

希望这个实战演示对你有所帮助!如果有任何问题,欢迎留言谈论