前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >电商系统设计之商品接口

电商系统设计之商品接口

作者头像
CrazyCodes
发布2018-09-18 10:47:32
1.2K0
发布2018-09-18 10:47:32
举报
文章被收录于专栏:Grace developmentGrace development

前言

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

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

接口设计

简述

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

  • 返回的JSON嵌套数量要少
  • 方便去查询到指定的SKU
  • 其他接口相关规范

查询SKU

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

代码语言:javascript
复制
"选择颜色": [
   {
          "name": "银色",
          "id": 75
   }
],
"选择版本": [
   {
          "name": "公开版",
          "id": 77
   },
   {
          "name": "【原厂延保版】",
          "id": 78
   }  
],
"内存": [
   {
          "name": "64G",
          "id": 82
   },
   {
          "name": "256G",
          "id": 83
   }
],

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

代码语言:javascript
复制
响应参数[规格名称][属性编码] = 拼接SKU串的必需品

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

代码语言:javascript
复制
75_77_82 = 银色,公开版,64G

接口文档

请求地址

/v1/product/{productId}

请求类型

GET

请求参数

参数

类型

默认值

说明

productId

int

0

商品编码

响应示例

代码语言:javascript
复制
{
  "code": 200,
  "message": "获取成功",
  "data": {
    "id": 131,
    "name": "Apple iPhone X (A1865) 64GB 深空灰色 移动联通电信4G手机",
    "price": "8388.00",
    "market_price": "8388.00",
    "sketch": "IPhone大法好,打九折,打九折,快剁手",
    "intro": "这是商品描述",
    "keywords":['苹果','iphone'],
    "attribute": {
      "选择颜色": [
        {
          "name": "银色",
          "id": 75
        },
        {
          "name": "深空灰色",
          "id": 76
        }
      ],
      "选择版本": [
        {
          "name": "公开版",
          "id": 77
        },
        {
          "name": "【原厂延保版】",
          "id": 78
        },
        {
          "name": "双网通版",
          "id": 79
        },
        {
          "name": "无线充套装",
          "id": 80
        },
        {
          "name": "Airpods套装",
          "id": 81
        }
      ],
      "内存": [
        {
          "name": "64G",
          "id": 82
        },
        {
          "name": "256G",
          "id": 83
        }
      ],
      "购买方式": [
        {
          "name": "官方标配",
          "id": 84
        },
        {
          "name": "移动优惠购",
          "id": 85
        },
        {
          "name": "电信优惠购",
          "id": 86
        },
        {
          "name": "联通优惠购",
          "id": 87
        }
      ]
    },
    "album": [
      {
        "id": 2,
        "name": "这是第一张图片",
        "url": "http://xxx.com/59ec33eaN6ddb0c54.jpg"
      },
      {
        "id": 3,
        "name": "这是第二张图片",
        "url": "http://xxx.com/59ec3400Nce4cc116.jpg"
      }
    ],
    "radio": {
      "id": 1,
      "name": "这是一个视频",
      "url": "http://xxx.com/1.mp4"
    },
    "sku": {
      "75_77_82_84": {
        "id": 1018,
        "name": "选择颜色:银色;选择版本:公开版;内存:64G;购买方式:官方标配;",
        "price": "8388.00",
        "stock": 83888388
      },
      "75_77_82_85": {
        "id": 1019,
        "name": "选择颜色:银色;选择版本:公开版;内存:64G;购买方式:移动优惠购;",
        "price": "8388.00",
        "stock": 83888388
      },
      "75_77_82_86": {
        "id": 1020,
        "name": "选择颜色:银色;选择版本:公开版;内存:64G;购买方式:电信优惠购;",
        "price": "8388.00",
        "stock": 83888388
      },
      "75_77_82_87": {
        "id": 1021,
        "name": "选择颜色:银色;选择版本:公开版;内存:64G;购买方式:联通优惠购;",
        "price": "8388.00",
        "stock": 83888388
      },
      "75_77_83_84": {
        "id": 1022,
        "name": "选择颜色:银色;选择版本:公开版;内存:256G;购买方式:官方标配;",
        "price": "8388.00",
        "stock": 83888388
      },
      "75_77_83_85": {
        "id": 1023,
        "name": "选择颜色:银色;选择版本:公开版;内存:256G;购买方式:移动优惠购;",
        "price": "8388.00",
        "stock": 83888388
      }
    }
  }
}

响应参数说明

核心参数

参数

类型

默认值

说明

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

商品库存

致谢

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

最后修改:1个月前 2018-08-03

© 著作权归作者所有

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-08-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 接口设计
    • 简述
      • 查询SKU
      • 接口文档
        • 请求地址
          • 请求类型
            • 请求参数
              • 响应示例
                • 响应参数说明
                  • 核心参数
                  • 商品图参数
                  • 商品视频参数
                  • 商品规格/属性参数
                  • 商品SKU参数
              • 致谢
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档