翻代碼的時候,無意中看到有小夥伴爲前端定義接口的時候,使用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都尼瑪是個啥?不看文檔打死也不敢隨便猜(話說,如果有文檔的話……)。