使用JSON定義數據接口的一種錯誤姿勢

翻代碼的時候,無意中看到有小夥伴爲前端定義接口的時候,使用JSON的姿勢不太正確。

方便起見,把問題簡化一下:java要向前端傳送一個List,List中的每個對象有兩個字段:標的物名稱和標的價格。

這個有問題的數據接口是這樣定義的:

{
    "objectList": [
        {
            "P-12-20191219-001": "5000"
        },
        {
            "P-12-20191219-002": "10000"
        },
        {
            "P-24-20191219-001": "50000"
        }
    ]
}

他直接將標的物名稱(objectName)當做key,把標的物價格(objectPrice)當做value傳給了前端。

下面說一下這樣做的問題。

1、接口喪失了可擴展性

如果我們按照正常的做法,將接口設計成這樣的話:

{
    "objectList": [
        {
            "objectName": "P-12-20191219-001",
            "objectPrice": "5000"
        },
        {
            "objectName": "P-12-20191219-002",
            "objectPrice": "10000"
        },
        {
            "objectName": "P-24-20191219-001",
            "objectPrice": "50000"
        }
    ]
}

以後如果需要追加字段,可以隨時隨意加。只要原來的兩個字段不做變動,那App不管舊版新版都可以正常使用,完全不受影響。

但是定義成 “objectName”:“objectPrice” 的話,怎麼擴展,怎麼兼容?

新舊版本兩個接口同時維護,直到舊版被強更掉嗎?除了給自己徒增麻煩以外沒有任何好處。

2、可讀性極差(不具備自說明性)

長期做這個項目的同事,看到前面的“P-期限-日期-編號”,一般都能馬上反應出來這是啥。

但是後面的5000、10000、50000都尼瑪是個啥?不看文檔打死也不敢隨便猜(話說,如果有文檔的話……)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章