本文示例代码:https://github.com/flym/train-propertytranslate
本文描述了这样一个场景:
针对于一个功能场景,第三方过来的数据格式均不相同,但需要通过一个统一的功能接口来进行调用,然后根据不同来源数据格式进行不同的数据展现。在后端实现时,尽量不要通过if else进行硬编码,而是通过配置的方式来完成数据的处理和呈现。
场景中提到了几个概念,如下:
- 功能场景和数据来源:分组信息,针对同一个来源,其格式是相同的。不同来源的数据格式不一样
- 统一功能接口:调用入口是统一的,即方法名,参数定义,以及返回格式都是相同的,仅参数内容不相同
- 配置化:场景是通用的,可以通过配置来实现,而不是在业务代码中硬编码
- 不同的数据展现:可以针对不同的分组和场景通过模板来进行渲染,而模板本身是可以配置的,这样即隔离了数据封装这一层。
举例如下, 如下的一个数据内容:
{ "trade_fullinfo_get_response": { "trade": { "seller_nick": "我在测试", "pic_name": "T1jVXXXePbXXaoPB6a_091917.jpg", "receiver_name": "东方不败", "buyer_message": "要送的礼物的,不要忘记的哦", "receiver_city": "杭州市", "receiver_district": "西湖区", "orders": { "order": [ { "title": "苹果", "unit": "个", "oid": 1, "price": 1.1, "sum": 1 } ] }, } } }
通过转换服务处理,可以展现为下面两种不同的数据内容(以html渲染为例)
本文从数据格式,转换器,转换过程,数据渲染几个方面来描述这一思路.
继续阅读“使用统一转换服务来处理不同数据展现的思路和实现”