需求背景
1.Android项目多为Java写的,经常会因为数据null出现空指针,代码中如果每个数据都判断,显得冗余。
2.前端的控件总是用多个条件判断是否显示。如果漏掉一个条件就会出现问题。发版后,产品如果需要改变判断条件,客户端就要重新发版。
3.有些时候后台给的数据并不是前端要的,沟通不足。前端使用起来会增加开发成本。
1.先看我们的数据
{
"statusCode":200,
"errorCode":null,
"comments":"成功",
"result":{ },
"pagination":{
"count":27,
"offset":0,
"length":20,
"sortingConditions":[ ]
},
"data":[
{
"showClueId":"5c6bd384a8e206762fca6356",
"showName":"女11无语",
"showType":"Acrobatics",
"referenceType":null,
"referenceUrl":null,
"resources":null,
"imageSource":null,
"imageSourceRemark":null,
"status":"AUDITING",
"showId":null,
"sellerId":null,
"sellerName":null,
"sellerCellphone":null,
"auditId":null,
"auditor":null,
"auditTime":1550570496000,
"rejectType":"INFO_NOT_EXACT",
"comments":null,
"showTypeDesc":"曲艺杂谈",
"imageSourceDesc":null,
"statusDesc":"审核中",
"rejectTypeDesc":"所提供信息不准确",
"referenceTypeDesc":null
}
]
}
希望在以下功能点改进:
1.errorCode多余。只用statusCode就可以表示状态码。
2.无论是列表还是简单数据,data节点下都是{}。
3.不要返回null。都要有值,如0 、""、false、[]、{}。
4.数据应该归类,层次结构明显。statusDesc、status应该归于一个对象。showTypeDesc、showType应该归于一个对象。
5.枚举值String AUDITING,前端要维护一套一样的字符串。如果错一个字母Android、iOS、h5都要要重新改动,不如返回int数字1、2、3。
6.判断控件的显示与否,应该返回一个boolean或者int供前端判断。多个条件控制控件显示的应该由后台处理好为1个字段后返回。这样即使以后想增减条件只要后台改动即可。
7.对话框提示,标题和内容应该由后台返回,放在一个对象里。这样易于维护,保证前端的文案统一。
8.点击列表跳转到不同页面,应该由后台控制。返回对象有跳转的页面和参数。
2.看看美团的数据
外卖详情页json如下:
{
"data": {
"navigate_bar": [{
"type": 1,
"icon": "http://p1.meituan.net/aichequan/fb27f3a99a25309c03054c63fd705b892093.png",
"click_url": "https://kf.dianping.com/csCenter/access/waimai_waimai_mtWaimaiApp?referId=6448781592289262&userId=66381444"
}, {
"type": 2,
"icon": "http://p0.meituan.net/aichequan/fdb456e728c85353e90443b00ac26ed42284.png",
"click_url": "meituanwaimai://waimai.meituan.com/browser?inner_url=http://i.waimai.meituan.com/node/message/getcategory?p_url=message-getcategory%26el_biz%3Dwaimaiapp%26el_page%3Dmessage-getcategory"
}, {
"type": 3,
"icon": "https://p1.meituan.net/coupon/b07a62973c2df7d806090441901381c93291.png@!style1",
"click_url": "",
"envelope_share_tip": {
"icon": "https://p1.meituan.net/coupon/f02ce51bd851c69d42e139e108eacb1213099.png@!style1",
"title": "【送您一个拼手气红包】",
"desc": "快分享给小伙伴看看谁会撞大运",
"envelope_total": 20,
"share_info": {
"content": "最高10元大包随机出没,手快有,手慢无~",
"icon": "https://p1.meituan.net/coupon/ddf7714ba86483c7f301958434ffe9495691.jpg@!style1",
"url": "https://activity.waimai.meituan.com/coupon/sharechannel/B2EA8E1ABA8B47EA82DB475BA17B517D?urlKey=66F29B1382F84304B2EF2592094F7993",
"title": "【美团外卖】第6个领取的人红包最大!",
"url_key": "",
"channel_url_key": ""
},
"channels": [1, 2],
"button_name": "发红包",
"share_icon": "https://p1.meituan.net/coupon/b07a62973c2df7d806090441901381c93291.png@!style1"
}
}],
"order_status_desc": {
"show_position": 0,
"status_desc": "订单已完成"
},
"order_operate_area": {
"fst_desc": "",
"snd_desc": "感谢您对美团外卖的信任,期待再次光临。",
"third_desc": "",
"button_list": [{
"code": 2027,
"title": "申请售后",
"highlight": 0,
"click_url": "",
"icon_url": "",
"sub_label_list": [{
"code": 2028,
"title": "联系商家",
"desc": "提前联系商家可以提高退款效率哦",
"highlight": 0,
"click_url": "",
"icon_url": ""
}, {
"code": 2003,
"title": "申请退款",
"desc": "",
"highlight": 0,
"click_url": "",
"icon_url": ""
}]
}, {
"code": 1001,
"title": "再来一单",
"highlight": 1,
"click_url": "",
"icon_url": "",
"sub_label_list": []
}]
},
"order_common_info": {
"order_template_type": 0,
"show_map_flag": 0,
"weather_type": 0,
"order_status": 8,
"status_code": 130,
"pay_status": 3,
"logistics_status": 40,
"order_push_time": 1551083436,
"status_time": 1551106524,
"order_time": 1551083432,
"pay_success_time": 1551083436,
"preorder_begin_deal_time": 0,
"expected_arrival_time": 0,
"delivery_time": 1551085476,
"formatted_delivery_time": "2月25日 17:04",
"wm_order_pay_type": 2,
"use_privacy": 1,
"privacy_icon": "http://p1.meituan.net/aichequan/950784aad109cf7351e814f86f7bc64b10002.png",
"can_feedback": 1,
"no_rider_confirm_alert": 0,
"no_rider_confirm_alert_text": "",
"delivery_type": 4,
"actual_delivery_type": 1
},
"poi_info": {
"city_id": 0,
"poi_name": "",
"poi_icon": "",
"poi_latitude": 0,
"poi_longitude": 0,
"poi_address": "",
"contact_way": [{
"type": 0,
"icon": "http://p0.meituan.net/aichequan/5e45fa48316cda43c659b92c4d1eb9cb1924.png",
"big_icon": "http://p0.meituan.net/aichequan/a661ba651b184f319278d97569ab5cc95718.png",
"poi_phone_list": [{
"type": 2,
"title": "商家电话",
"phone": "02158759567"
}, {
"type": 2,
"title": "商家电话",
"phone": "4009210219"
}]
}, {
"type": 1,
"icon": "http://p1.meituan.net/aichequan/89950613a48860ab6c4fd5760aa470821810.png",
"big_icon": "http://p1.meituan.net/aichequan/6177ef69d981da6efad9aeb2261fe1045992.png",
"poi_im": {
"poi_im_entrance_status": 0,
"poi_dx_id": 137440049808,
"b_app_id": 4,
"remind_msg": ""
}
}]
},
"yunying_area": {
"url": "http://p1.meituan.net/wmbanner/1157dc14cf5e644aa4d81157e683a98b52950.png",
"action": 2,
"target": "meituanwaimai://waimai.meituan.com/browser?inner_url=http%3A%2F%2Fmarketing.waimai.meituan.com%2Fo%2Factivity%2FredirectH5%3Factivity_id%3D28216%26ys%3D3%26ys_id%3D5%26entry_id%3Db_A7OTp%26entry_item_id%3D5"
},
"coupon_compensate": {
"is_compensate": false,
"coupon_info_list": [],
"button_text": "",
"background": "",
"click_url": ""
},
"address_modify_info": {
"modify_status": 0,
"modify_btn_content": "",
"modify_type": 0,
"order_extra_cat": 0
},
"order_ext_info": {
"ext": ""
}
},
"code": 0,
"msg": "成功",
"traceid": "-4511537110752729940"
}
个人中心页json如下:
{
"data": {
"user_info": {
"click_desc": "个人信息>"
},
"vip_info": {
"user_type": 2,
"show_vip_entrance": false,
"entrance_desc": "",
"highlight": false,
"h5_url": ""
},
"settings_info": {
"show_clean_cache": true,
"show_auto_download": true,
"mt_protocol_and_illustrate": "美团协议与说明"
},
"message_info": {
"message_type": 0,
"unread_count": 0,
"h5_url": "meituanwaimai://waimai.meituan.com/browser?inner_url=http://i.waimai.meituan.com/node/message/getcategory?p_url=message-getcategory%26el_biz%3Dwaimaiapp%26el_page%3Dmessage-getcategory"
},
"category_list": [{
"show_title": 0,
"cat_title": "我的信息",
"fun_list": [{
"fun_code": 1,
"fun_title": "我的收藏",
"icon": "http://p1.meituan.net/xianfu/9c1388ba5fbb367c1a93996f39c2fba94506.jpg",
"click_url": "meituanwaimai://waimai.meituan.com/likedpoi",
"need_login": 1,
"desc_secd": "",
"desc_secd_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
}, {
"fun_code": 4,
"fun_title": "我的足迹",
"icon": "http://p1.meituan.net/xianfu/7ad7da19bfadd5e6081b7606025214254582.jpg",
"click_url": "meituanwaimai://waimai.meituan.com/footprint",
"need_login": 1,
"desc_secd": "",
"desc_secd_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
}, {
"fun_code": 2,
"fun_title": "我的评价",
"icon": "http://p0.meituan.net/xianfu/5d02f44df0f9f26ea0eca95957824bae4444.jpg",
"click_url": "meituanwaimai://waimai.meituan.com/mycommentlist",
"need_login": 1,
"desc_secd": "",
"desc_secd_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
}, {
"fun_code": 5,
"fun_title": "答谢记录",
"icon": "http://p1.meituan.net/xianfu/5c1bf832376403ca2ab22b8d8748e0fd5479.jpg",
"click_url": "meituanwaimai://waimai.meituan.com/browser?inner_url=http%3a%2f%2fi.waimai.meituan.com%2fnode%2frider%2fusertiplist",
"need_login": 1,
"desc_secd": "",
"desc_secd_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
}, {
"fun_code": 6,
"fun_title": "我的地址",
"icon": "http://p0.meituan.net/xianfu/a813bff1813024b05ff45422deac24bd4276.jpg",
"click_url": "meituanwaimai://waimai.meituan.com/mineaddress",
"need_login": 1,
"desc_secd": "",
"desc_secd_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
}]
}, {
"show_title": 1,
"cat_title": "我的资产",
"fun_list": [{
"fun_code": 7,
"fun_title": "红包",
"icon": "http://p1.meituan.net/xianfu/a361ce97f9f00f2715bb960a789d925e2315.jpg",
"click_url": "meituanwaimai://waimai.meituan.com/coupons",
"need_login": 1,
"desc_secd": "9个未使用",
"desc_secd_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
}, {
"fun_code": 8,
"fun_title": "代金券",
"icon": "http://p0.meituan.net/xianfu/875f13a76045b7f6862a2b7149babec32329.jpg",
"click_url": "meituanwaimai://waimai.meituan.com/poicoupons",
"need_login": 1,
"desc_secd": "18张未使用",
"desc_secd_status": 0,
"bubble": {
"type": 2,
"description": "",
"version": 1540451286
}
}, {
"fun_code": 21,
"fun_title": "外卖豆",
"icon": "http://p0.meituan.net/aichequan/54cdbca154e2b6c8c117e5530cc64bae1858.png",
"click_url": "meituanwaimai://waimai.meituan.com/browser?future=1&inner_url=https%3a%2f%2factivity.waimai.meituan.com%2facstatic%2fmature%2fvirtualcurrency",
"need_login": 1,
"desc_secd": "50个",
"desc_secd_status": 0,
"bubble": {
"type": 2,
"description": "new",
"version": 1534770962
}
}, {
"fun_code": 9,
"fun_title": "我的钱包",
"icon": "http://p1.meituan.net/xianfu/2c14b3425c7bf1f3d63d11f47a7ef9ea2230.jpg",
"click_url": "meituanpayment://wallet/launch",
"need_login": 1,
"desc_secd": "签到赢现金",
"desc_secd_status": 0,
"bubble": {
"type": 2,
"description": "赢现金",
"version": 1550216692
}
}, {
"fun_code": 9,
"fun_title": "借钱",
"icon": "http://p0.meituan.net/walletopenplatform/34c73f10f017877677edfdee7d4c9a9d1205.png",
"click_url": "https://expenses-fe.meituan.com?utm_source=fin_group_mine&ehwebview=1",
"need_login": 1,
"desc_secd": "最高5万",
"desc_secd_status": 0,
"bubble": {
"type": 2,
"description": "秒过",
"version": 1550216013
}
}]
}, {
"show_title": 1,
"cat_title": "我的服务",
"fun_list": [{
"fun_code": 13,
"fun_title": "帮助与反馈",
"icon": "http://p1.meituan.net/xianfu/317aabdd31dfcfa1739149089a2e041a2780.jpg",
"click_url": "meituanwaimai://waimai.meituan.com/browser?inner_url=http%3A%2F%2Fi.waimai.meituan.com%2Fnode%2Faccount%2Fhelp",
"need_login": 0,
"desc_secd": "",
"desc_secd_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
}, {
"fun_code": 14,
"fun_title": "客服中心",
"icon": "http://p0.meituan.net/xianfu/55454d4faaed6ad212b2b8a929edef372425.jpg",
"click_url": "meituanwaimai://waimai.meituan.com/browser?inner_url=https%3a%2f%2fh5.dianping.com%2fapp%2fcs-fe-mai-portal%2findex.html%3fneed_login%3d1%26appkey%3dwaimai_portal_waimaiapp%26subSource%3dMT_WAIMAI_APP&userId=66381444&appName=android&appVer=7.5.4",
"need_login": 0,
"desc_secd": "",
"desc_secd_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
}]
}, {
"show_title": 1,
"cat_title": "更多推荐",
"fun_list": [{
"fun_code": 11,
"fun_title": "邀请有奖",
"icon": "http://p0.meituan.net/xianfu/cf5ddfcae114ed8d7d147d51064532252477.jpg",
"click_url": "meituanwaimai://waimai.meituan.com/browser?inner_url=https%3a%2f%2fpromotion-waimai.meituan.com%2finvite%2fpage%2fmain%3fsource_id%3d1",
"need_login": 1,
"desc_secd": "",
"desc_secd_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
}, {
"fun_code": 19,
"fun_title": "商家入驻",
"icon": "http://p1.meituan.net/aichequan/53ccba9fafa40b27953f354dbfdda463755.png",
"click_url": "meituanwaimai://waimai.meituan.com/browser?inner_url=https%3a%2f%2fi.meituan.com%2fkd%2f%3fsource%3d1",
"need_login": 0,
"desc_secd": "",
"desc_secd_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
}, {
"fun_code": 16,
"fun_title": "骑手招募",
"icon": "http://p0.meituan.net/aichequan/57afa43ad250fd67c71adbc793ecd4691811.png",
"click_url": "meituanwaimai://waimai.meituan.com/browser?inner_url=https%3A%2F%2Fpeisong.meituan.com%2Fapp%2FriderRecruitmentFusion%2Findex%3FchannelCode%3Dwmic%26cityCode%3D100000%26recruitType%3D102",
"need_login": 0,
"desc_secd": "",
"desc_secd_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
}, {
"fun_code": 12,
"fun_title": "我要合作",
"icon": "http://p0.meituan.net/aichequan/39a38a017728c7513b1e7e30241300fc2854.png",
"click_url": "meituanwaimai://waimai.meituan.com/browser?inner_url=http%3A%2F%2Fi.waimai.meituan.com%2Fstatic%2Fhtml%2Fshop_enter.html",
"need_login": 0,
"desc_secd": "",
"desc_secd_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
}, {
"fun_code": 24,
"fun_title": "美团公益",
"icon": "http://p1.meituan.net/aichequan/c2eef59a0c51ae78b34a214214bebac33356.png",
"click_url": "https://gongyi.meituan.com/m?fromSource=wmcenter",
"need_login": 0,
"desc_secd": "",
"desc_secd_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
}]
}],
"premium_campaign": {
"show": false,
"link": "",
"text": "",
"icon_url": "",
"bg_url": "",
"buy_status": 0,
"bubble": {
"type": 0,
"description": "",
"version": 0
}
},
"wm_card": {
"title": "美团会员",
"description": "已购得美团会员,卡内有2个红包可用",
"link": "https://i.waimai.meituan.com/node/campaign/coupon-preview",
"link_text": "立即使用",
"link_show_type": 0,
"show": true,
"wmcard_status": 3
}
},
"code": 0,
"msg": "成功",
"traceid": "2177383065663856725"
}
总结如下:
1.数据没有null,为0、""、false。前后端交互很强,现有的问题是前后端沟通不多,后台给的并不一定是前端想要的。可以增加接口设计环节,前后端共同参与。
2.小图标归类于navigate_bar。右上角客服图标、消息图标、发红包图标归于一类。点击客服图标、消息图标,跳转到对应页面click_url。
{
"type":1,
"icon":"[http://p1.meituan.net/aichequan/fb27f3a99a25309c03054c63fd705b892093.png](http://p1.meituan.net/aichequan/fb27f3a99a25309c03054c63fd705b892093.png)",
"click_url":"[https://kf.dianping.com/csCenter/access/waimai_waimai_mtWaimaiApp?referId=6448781592289262&userId=66381444](https://kf.dianping.com/csCenter/access/waimai_waimai_mtWaimaiApp?referId=6448781592289262&userId=66381444)"
}
点击发红包图标,弹出对话框。click_url为“”。
"envelope_share_tip":{
"icon":"[https://p1.meituan.net/coupon/f02ce51bd851c69d42e139e108eacb1213099.png@!style1](https://p1.meituan.net/coupon/f02ce51bd851c69d42e139e108eacb1213099.png@!style1)",
"title":"【送您一个拼手气红包】",
"desc":"快分享给小伙伴看看谁会撞大运",
"envelope_total":20,
"share_info":{
"content":"最高10元大包随机出没,手快有,手慢无~",
"icon":"[https://p1.meituan.net/coupon/ddf7714ba86483c7f301958434ffe9495691.jpg@!style1](https://p1.meituan.net/coupon/ddf7714ba86483c7f301958434ffe9495691.jpg@!style1)",
"url":"[https://activity.waimai.meituan.com/coupon/sharechannel/B2EA8E1ABA8B47EA82DB475BA17B517D?urlKey=CD5BA7906FC8486F8A6CA629758B0432](https://activity.waimai.meituan.com/coupon/sharechannel/B2EA8E1ABA8B47EA82DB475BA17B517D?urlKey=CD5BA7906FC8486F8A6CA629758B0432)",
"title":"【美团外卖】第9个领取的人红包最大!",
"url_key":"",
"channel_url_key":""
},
"channels":[
1,
2
],
"button_name":"发红包",
"share_icon":"[https://p1.meituan.net/coupon/b07a62973c2df7d806090441901381c93291.png@!style1](https://p1.meituan.net/coupon/b07a62973c2df7d806090441901381c93291.png@!style1)"
}
3.申请售后、再来一单等标签按钮后台返回。
"button_list":[
{
"code":2027,
"title":"申请售后",
"highlight":0,
"click_url":"",
"icon_url":"",
"sub_label_list":[
{
"code":2028,
"title":"联系商家",
"desc":"提前联系商家可以提高退款效率哦",
"highlight":0,
"click_url":"",
"icon_url":""
},
{
"code":2003,
"title":"申请退款",
"desc":"",
"highlight":0,
"click_url":"",
"icon_url":""
}
]
},
{
"code":1001,
"title":"再来一单",
"highlight":1,
"click_url":"",
"icon_url":"",
"sub_label_list":[
]
}
]
4.点击按钮跳转。点击我的收藏 "click_url":"meituanwaimai://waimai.meituan.com/likedpoi",跳转的是美团外卖app的likedpoi页面。
5.多个标签的代码(例如:票面标签)
{
"seatPlanTags": [
{
"displayName": "折",
"name": "DISCOUNT"
},
{
"displayName": "抢",
"name": "QIANG"
}
]
}
参考美团的button_list。name字段 DISCOUNT、QIANG多余,只要标签名称或者int标识。