当当平台商品详情接口设计与调用指南

当当平台商品详情接口设计与调用指南
接口名称

GET /api/product/detail
图书商品核心信息查询接口

请求参数说明
参数名称    类型    是否必填    说明
isbn    string    是    国际标准书号(支持13位/10位)
product_id    string    否    平台内部商品编号(与ISBN二选一)
need_stock    bool    否    是否返回库存数据(默认false)
detail_level    int    否    详情级别(1基础/2扩展/3完整)
认证鉴权机制
python
Copy Code
import requests
import hmac
from urllib.parse import urlencode

def generate_sign(secret, params):
    """HMAC-SHA256签名生成器"""
    query = urlencode(sorted(params.items()))
    return hmac.new(secret.encode(), query.encode(), 'sha256').hexdigest()

# 开发者凭证
CLIENT_ID = "YOUR_CLIENT_ID"
CLIENT_SECRET = "YOUR_SECRET_KEY"

点击获取key和secret

# 构造请求示例
params = {
    "isbn": "9787108009821",
    "need_stock": "true",
    "timestamp": str(int(time.time())),
    "nonce": "a3d8f7"  # 6位随机字符串
}

# 生成签名
signature = generate_sign(CLIENT_SECRET, params)

# 添加认证头
headers = {
    "X-Client-Id": CLIENT_ID,
    "X-Auth-Sign": signature
}

响应数据结构(JSON)
json
Copy Code
{
  "code": 200,
  "data": {
    "base_info": {
      "product_id": "21068943",
      "isbn": "9787108009821",
      "title": "中国历代政治得失",
      "author": "钱穆",
      "press": "生活·读书·新知三联书店",
      "edition": "第2版",
      "page_count": 188,
      "paper_type": "胶版纸"
    },
    "price_info": {
      "retail_price": 38.00,
      "dangdang_price": 26.60,
      "vip_price": 24.80,
      "stock_status": 3  // 1-充足 2-紧张 3-预售
    },
    "content_info": {
      "catalog": "第一章 汉代...",
      "abstract": "本书为作者的专题演讲合集...",
      "preview_pages": [
        "https://img.example.com/preview/page1.jpg",
        "https://img.example.com/preview/page2.jpg"
      ]
    },
    "media_info": {
      "cover_image": "https://img.example.com/cover.jpg",
      "audio_preview": "https://audio.example.com/chapter1.mp3",
      "video_intro": "https://video.example.com/trailer.mp4"
    }
  }
}

典型错误场景
400 错误类
json
Copy Code
{
  "code": 40012,
  "message": "ISBN格式校验失败",
  "solution": "请检查ISBN编号是否符合规范"
}

403 错误类
json
Copy Code
{
  "code": 40309,
  "message": "签名验证未通过",
  "documentation": "https://open.dangdang.com/docs/signature"
}

404 错误类
json
Copy Code
{
  "code": 40401,
  "message": "指定商品不存在",
  "retry": false
}

代码调用示例(Python)
python
Copy Code
def get_book_detail(isbn):
    API_ENDPOINT = "https://api.open.dangdang.com/product/detail"
    
    params = {
        "isbn": isbn,
        "timestamp": str(int(time.time())),
        "nonce": secrets.token_hex(3)
    }
    
    # 签名生成
    params["sign"] = generate_sign(CLIENT_SECRET, params)
    
    try:
        response = requests.get(
            API_ENDPOINT,
            params=params,
            headers={"X-Client-Id": CLIENT_ID},
            timeout=5
        )
        response.raise_for_status()
        
        # 处理多版本数据
        if response.json().get('data', {}).get('ebook'):
            return process_ebook_data(response.json())
        else:
            return process_paperbook_data(response.json())
            
    except requests.exceptions.HTTPError as err:
        handle_api_error(err.response.json())
    except requests.exceptions.Timeout:
        logging.error("API请求超时")

开发注意事项

数据缓存策略‌
建议本地缓存商品基础信息(缓存时间<=6小时),避免高频请求

特殊商品处理‌

电子书资源需检查has_ebook字段
套装图书注意series_info嵌套结构

流量控制‌

免费版:10次/秒
企业版:50次/秒(需签约商务协议)

数据展示限制‌
试读章节不得展示超过全书20%的内容

注:本示例代码基于当当开放平台2023年接口规范模拟实现,实际接入请以官方最新文档为准,严禁用于非法数据采集行为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值