使用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都尼玛是个啥?不看文档打死也不敢随便猜(话说,如果有文档的话……)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值