電商系統設計之商品接口

clipboard.png

前言

我應該是少數在文章中直接展現接口文檔的人。本篇我思考了好久到底要不要解析下商品接口開發的注意點。iphone

客戶端開發與服務端開發便是天敵也是兄弟。但願本篇文章讓大家減小爭執,把「愛」給對方。編碼

接口設計

簡述

電商系統設計之中,比較複雜的接口就論商品詳情的接口了,響應參數特別多,特別雜。在開發獲取商品詳情接口時要遵循如下幾個原則url

  • 返回的JSON嵌套數量要少
  • 方便去查詢到指定的SKU
  • 其餘接口相關規範

clipboard.png

查詢SKU

關於查詢SKU,我讓個人小夥伴是這樣作的,首先拿出規格和屬性spa

"選擇顏色": [
   {
          "name": "銀色",
          "id": 75
   }
],
"選擇版本": [
   {
          "name": "公開版",
          "id": 77
   },
   {
          "name": "【原廠延保版】",
          "id": 78
   }  
],
"內存": [
   {
          "name": "64G",
          "id": 82
   },
   {
          "name": "256G",
          "id": 83
   }
],

沒錯,你沒有看錯,實際就是將規格做爲key,屬性做爲value。將value[id]取出,進行拼接便可查詢到對應的SKU了。設計

響應參數[規格名稱][屬性編碼] = 拼接SKU串的必需品

規格至關於一個分組,屬性其實也是拼接SKU的重要組成部分,上述數據爲例code

75_77_82 = 銀色,公開版,64G

接口文檔

請求地址

/v1/product/{productId}視頻

請求類型

GET blog

請求參數

參數 類型 默認值 說明
productId int 0 商品編碼

響應示例

{
  "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 int 0 sku編碼
name string - sku 名稱
price double 00.00 商品價格
stock int 0 商品庫存

致謝

字不在多,講清楚就行,感謝你看到這裏,但願本篇文章能夠幫助到你,有疑問能夠在評論區討論,謝謝。接口

相關文章
相關標籤/搜索