电商商务/外贸系统设计之商品API接口接入

前言

我应该是少数在文章中直接展示接口文档的人。本篇我思考了很久到底要不要解析下商品接口开发的注意点。

客户端开发与服务端开发即是天敌也是兄弟。希望本篇文章让你们减少争执,把“爱”给对方。

接口设计

简述

电商系统设计之中,比较复杂的接口就论电商商品详情的接口了,响应参数特别多,特别杂。在开发获取商品详情接口时要遵循以下几个原则

  • 返回的JSON嵌套数量要少

  • 方便去查询到指定的SKU

  • 其他接口相关规范电商商务/外贸系统设计之商品API接口接入_第1张图片

查询SKU

关于查询SKU,我让我的小伙伴是这样做的,首先拿出规格和属性


  1. "选择颜色": [

  2.   {

  3.          "name": "银色",

  4.          "id": 75

  5.   }

  6. ],

  7. "选择版本": [

  8.   {

  9.          "name": "公开版",

  10.          "id": 77

  11.   },

  12.   {

  13.          "name": "【原厂延保版】",

  14.          "id": 78

  15.   }  

  16. ],

  17. "内存": [

  18.   {

  19.          "name": "64G",

  20.          "id": 82

  21.   },

  22.   {

  23.          "name": "256G",

  24.          "id": 83

  25.   }

  26. ],

没错,你没有看错,实际就是将规格作为key,属性作为value。将value[id]取出,进行拼接即可查询到对应的SKU了。


  1. 响应参数[规格名称][属性编码] = 拼接SKU串的必需品

规格相当于一个分组,属性其实也是拼接SKU的重要组成部分,上述数据为例


  1. 75_77_82 = 银色,公开版,64G

接口文档

请求地址

/v1/product/{productId}

请求类型

GET

请求参数

参数 类型 默认值 说明
productId int 0 商品编码

响应示例


  1. {

  2.  "code": 200,

  3.  "message": "获取成功",

  4.  "data": {

  5.    "id": 131,

  6.    "name": "Apple iPhone X (A1865) 64GB 深空灰色 移动联通电信4G手机",

  7.    "price": "8388.00",

  8.    "market_price": "8388.00",

  9.    "sketch": "IPhone大法好,打九折,打九折,快剁手",

  10.    "intro": "这是商品描述",

  11.    "keywords":['苹果','iphone'],

  12.    "attribute": {

  13.      "选择颜色": [

  14.        {

  15.          "name": "银色",

  16.          "id": 75

  17.        },

  18.        {

  19.          "name": "深空灰色",

  20.          "id": 76

  21.        }

  22.      ],

  23.      "选择版本": [

  24.        {

  25.          "name": "公开版",

  26.          "id": 77

  27.        },

  28.        {

  29.          "name": "【原厂延保版】",

  30.          "id": 78

  31.        },

  32.        {

  33.          "name": "双网通版",

  34.          "id": 79

  35.        },

  36.        {

  37.          "name": "无线充套装",

  38.          "id": 80

  39.        },

  40.        {

  41.          "name": "Airpods套装",

  42.          "id": 81

  43.        }

  44.      ],

  45.      "内存": [

  46.        {

  47.          "name": "64G",

  48.          "id": 82

  49.        },

  50.        {

  51.          "name": "256G",

  52.          "id": 83

  53.        }

  54.      ],

  55.      "购买方式": [

  56.        {

  57.          "name": "官方标配",

  58.          "id": 84

  59.        },

  60.        {

  61.          "name": "移动优惠购",

  62.          "id": 85

  63.        },

  64.        {

  65.          "name": "电信优惠购",

  66.          "id": 86

  67.        },

  68.        {

  69.          "name": "联通优惠购",

  70.          "id": 87

  71.        }

  72.      ]

  73.    },

  74.    "album": [

  75.      {

  76.        "id": 2,

  77.        "name": "这是第一张图片",

  78.        "url": "http://xxx.com/59ec33eaN6ddb0c54.jpg"

  79.      },

  80.      {

  81.        "id": 3,

  82.        "name": "这是第二张图片",

  83.        "url": "http://xxx.com/59ec3400Nce4cc116.jpg"

  84.      }

  85.    ],

  86.    "radio": {

  87.      "id": 1,

  88.      "name": "这是一个视频",

  89.      "url": "http://xxx.com/1.mp4"

  90.    },

  91.    "sku": {

  92.      "75_77_82_84": {

  93.        "id": 1018,

  94.        "name": "选择颜色:银色;选择版本:公开版;内存:64G;购买方式:官方标配;",

  95.        "price": "8388.00",

  96.        "stock": 83888388

  97.      },

  98.      "75_77_82_85": {

  99.        "id": 1019,

  100.        "name": "选择颜色:银色;选择版本:公开版;内存:64G;购买方式:移动优惠购;",

  101.        "price": "8388.00",

  102.        "stock": 83888388

  103.      },

  104.      "75_77_82_86": {

  105.        "id": 1020,

  106.        "name": "选择颜色:银色;选择版本:公开版;内存:64G;购买方式:电信优惠购;",

  107.        "price": "8388.00",

  108.        "stock": 83888388

  109.      },

  110.      "75_77_82_87": {

  111.        "id": 1021,

  112.        "name": "选择颜色:银色;选择版本:公开版;内存:64G;购买方式:联通优惠购;",

  113.        "price": "8388.00",

  114.        "stock": 83888388

  115.      },

  116.      "75_77_83_84": {

  117.        "id": 1022,

  118.        "name": "选择颜色:银色;选择版本:公开版;内存:256G;购买方式:官方标配;",

  119.        "price": "8388.00",

  120.        "stock": 83888388

  121.      },

  122.      "75_77_83_85": {

  123.        "id": 1023,

  124.        "name": "选择颜色:银色;选择版本:公开版;内存:256G;购买方式:移动优惠购;",

  125.        "price": "8388.00",

  126.        "stock": 83888388

  127.      }

  128.    }

  129.  }

  130. }

响应参数说明

核心参数

参数 类型 默认值 说明
id int 0 商品编码
name string - 商品标题
price double 00.00 商品价格
keywords string - 商品关键字
market_price double 00.00 市场价格
virtual int 0 虚拟销量
sketch string - 商品简述
intro string - 商品详情

商品图参数

参数 类型 默认值 说明
album[] array [] 商品轮播图
id int 0 资源编码
name string - 图片名称
url string - 资源路径

商品视频参数

无视频则返回 []

参数 类型 默认值 说明
radio[] array [] 商品视频
id int 0 资源编码
name string - 视频名称
url string - 资源路径

商品规格/属性参数

参数 类型 默认值 说明
attribute array[] [] 商品属性
[(attr_name)] [] array[] [] 属性名称
name string - 属性项名称
id int 0 属性项编码

商品SKU参数

参数 类型 默认值 说明
sku[] array[] [] 商品sku
[(option_id)] [] array[] 商品SKU查询办法为 attribute[(attr_name)]['id'] 拼接
id int 0 sku编码
name string - sku 名称
price double 00.00 商品价格
stock int 0 商品库存

致谢

字不在多,讲清楚就行,感谢你看到这里,希望本篇文章可以帮助到你,有疑问可以在评论区讨论,谢谢。

你可能感兴趣的:(android,开发语言,大数据,数据库,php)