当前位置: 首页 > news >正文

京东商品详情API接口调用讲解(实战案例)

京东商品详情API接口调用实战案例

以下是通过京东开放平台调用商品详情API接口的完整实战流程,涵盖注册、调用、数据处理及注意事项。


一、前期准备
  1. 注册京东开放平台账号
    • 访问京东开放平台/万邦开放平台。
    • 注册开发者账号,完成实名认证,获取AppKey和AppSecret(用于接口身份验证)。
  2. 创建应用并申请权限
    • 登录后进入“我的应用”页面,点击“创建应用”。
    • 填写应用名称、描述等信息,选择需要调用的商品详情API接口(如jingdong.ware.product.get)。
    • 提交审核,通过后获取AppKey和AppSecret。

二、调用API接口
  1. 查阅API文档
    • 在京东开放平台找到商品详情API接口文档,了解请求参数、返回格式及调用规则。
    • 示例接口:https://api.jd.com/routerjson
    • 请求方式:GETPOST
    • 必要参数:method(接口名称)、app_keysign(签名)、timestamp(时间戳)、360buy_param_json(商品参数)。
  2. 生成签名(sign)
    • 签名算法:将参数按字典序排序后拼接字符串,再通过MD5加密生成签名。
    • 示例代码(Python):
       

      python复制代码

      import hashlib
      import time
      import urllib.parse
      def generate_sign(params, app_secret):
      sorted_params = sorted(params.items())
      query_string = ''.join(f'{k}{v}' for k, v in sorted_params)
      sign_content = f"{app_secret}{query_string}{app_secret}"
      sign = hashlib.md5(sign_content.encode('utf-8')).hexdigest().upper()
      return sign
      app_key = "your_app_key"
      app_secret = "your_app_secret"
      timestamp = str(int(time.time() * 1000))
      params = {
      "method": "jingdong.ware.product.get",
      "app_key": app_key,
      "timestamp": timestamp,
      "360buy_param_json": '{"skuIds":"123456789"}', # 商品ID
      "v": "2.0",
      "sign_method": "md5"
      }
      params["sign"] = generate_sign(params, app_secret)
  3. 发送请求
    • 使用HTTP客户端(如requests库)发送请求。
    • 示例代码:
       

      python复制代码

      import requests
      url = "https://api.jd.com/routerjson"
      response = requests.get(url, params=params)
      if response.status_code == 200:
      data = response.json()
      print(data)
      else:
      print(f"Error: {response.status_code}, {response.text}")

三、处理返回数据
  1. 解析JSON数据
    • 返回数据通常为JSON格式,包含商品标题、价格、库存、评价等信息。
    • 示例返回数据:
       

      json复制代码

      {
      "jingdong_ware_product_get_response": {
      "ware_product_dto": {
      "productName": "某品牌外套",
      "price": "299.00",
      "stockNum": "100",
      "imageUrl": "https://example.com/product_image.jpg"
      }
      },
      "code": "10000",
      "message": "success"
      }
  2. 提取关键信息
    • 根据业务需求提取商品标题、价格、库存等字段。
    • 示例代码:
       

      python复制代码

      if data.get("jingdong_ware_product_get_response"):
      product = data["jingdong_ware_product_get_response"]["ware_product_dto"]
      print(f"商品名称: {product['productName']}")
      print(f"价格: {product['price']}")
      print(f"库存: {product['stockNum']}")

四、注意事项
  1. 接口调用限制
    • 京东API对调用频率有限制,避免频繁请求导致IP被封禁。
    • 建议设置请求间隔,或使用缓存机制减少重复请求。
  2. 数据安全
    • 妥善保管AppKey和AppSecret,避免泄露。
    • 使用HTTPS协议传输数据,确保数据安全。
  3. 错误处理
    • 处理可能的错误情况,如签名错误、参数缺失、接口调用频率超限等。
    • 示例错误处理:
       

      python复制代码

      if data.get("code") != "10000":
      print(f"接口调用失败: {data.get('message')}")
  4. 版本更新
    • 京东API接口可能会不定期更新,建议定期查阅官方文档,及时调整代码。

五、实战案例:获取商品详情并存储到数据库
  1. 需求:获取指定商品的标题、价格和库存,并存储到MySQL数据库。
  2. 实现步骤
    • 调用京东商品详情API获取数据。
    • 解析返回的JSON数据,提取商品信息。
    • 使用pymysql库将数据插入到MySQL数据库。
  3. 示例代码
     

    python复制代码

    import pymysql
    def save_to_db(product):
    connection = pymysql.connect(
    host='localhost',
    user='root',
    password='password',
    database='jd_products'
    )
    try:
    with connection.cursor() as cursor:
    sql = "INSERT INTO products (name, price, stock) VALUES (%s, %s, %s)"
    cursor.execute(sql, (product['productName'], product['price'], product['stockNum']))
    connection.commit()
    finally:
    connection.close()
    # 调用API并处理数据
    response_data = requests.get(url, params=params).json()
    if response_data.get("jingdong_ware_product_get_response"):
    product = response_data["jingdong_ware_product_get_response"]["ware_product_dto"]
    save_to_db(product)

六、总结

通过京东开放平台的商品详情API接口,开发者可以快速获取商品的详细信息,为电商运营、市场分析等提供数据支持。在调用API时,需注意接口调用限制、数据安全和错误处理,确保系统的稳定性和可靠性。

相关文章:

  • Day56 | 99. 恢复二叉搜索树、103. 二叉树的锯齿形层序遍历、109. 有序链表转换二叉搜索树、113. 路径总和 II
  • 使用openpyxl时的一些注意点
  • 1.2 腾讯校招通关指南-面试官评分标准:技术岗/产品岗核心考核点揭秘
  • 【自相关】全局 Moran’s I 指数
  • OPPO Android 移动设备日志文件目录结构及其内容分析
  • git合并分支原理
  • 适合stm32 前端adc使用的放大器芯片
  • jetson orin nano 开发板conda 的 base 环境在 shell 启动时自动激活
  • 如何解决服务器文件丢失或损坏的问题?
  • JAVA学习-Stream
  • Spring IoC与DI详解:从Bean概念到手写实现
  • Spring Batch 专题系列(四):配置与调度 Spring Batch 作业
  • 分库分表-除了hash分片还有别的吗?
  • 算法思想之分治-快排
  • Java基础 4.15
  • PCL八叉树聚类
  • Python基础语法2
  • 游戏代码编辑
  • 凸优化第2讲:凸优化建模
  • 一篇文章快速上手linux系统中存储多路径multipath的配置
  • 人民文学奖颁出,董宇辉获传播贡献奖
  • 泰康资产获批设立全资私募基金管理子公司,首期投资规模预计120亿元
  • 习近平抵达柬埔寨金边国际机场发表书面讲话(全文)
  • 国新办将举行发布会,介绍《加快推进服务业扩大开放综合试点工作方案》有关情况
  • 编年岂徒哉:《资治通鉴》中魏征26年的人生史
  • 朝方谴责美国派遣战略轰炸机至朝鲜半岛