前后端高效协同的几点建议

2017-11-03  本文已影响206人  lzh_coder

       在研发过程中,前后端的交互相辅相成,一方面后端为前端提供Rest接口服务,另一方面,前端为后端收集用户数据。二者的共同目标是一致的,完成产品需求,服务用户。在这个二元交互的过程,如何把交互做到最为高效,决定了开发协同的效率。

       在这个过程中,Rest接口是前后端服务的纽带。需要注意一下几个问题:

1,后端总体架构对前端的影响

涉及前端配合的地方,如接口校验,token机制等,刚一开始的时候一定要考虑清楚。这些事情,一劳永逸,原则上避免后续出现在非产品需求的地方,前端修改代码,用户升级,带来不好的体验。

2,接口请求的约定

接口是跟着UI走的,正如UI是一棵树,接口也是一棵树。接口调用要采用Action的机制,而不是写死Url路径这种很落后的方式。第一步的接口返回后面几步操作的actions。Action是一个对象。它里面包含了以下几个方面。

rel:用于标记这个action的作用,起到一个标识作用,前端根据rel去取相应的action。

href:调用具体服务的全路径链接url。注意:有些网络请求,需要服务端传递一些参数到前端,统一放到href的后面,以&链接起来。

method:接口调用的方式。常用Get,Post,Put,Delete。

text:对action的描述,多数情况下,一个页面对应一个网络请求,这个text既可以起到说明action的作用,也可以作为页面的title。

params:前端需要上传的参数map,后端返回的action里面不包含这个字段,这个参数和href里面的参数一道,构成了这个网络请求的参数。具体参数怎么放到http请求里面,这个建议使用不同请求方式的默认传参。如Get请求,参数放到Url后面,Post参数放body。。

files:前端需要上传的参数数组,后端返回的action里面不包含这个字段,这个参数用于标识这个接口需要上传文件,以multi-part的方式。

这样封装的好处在于,前端可以使用一套通用请求逻辑,后端也可以写一套通用的接口返回逻辑。这样可以避免写死Url。

3,接口返回的约定:

接口返回的数据是对业务本身的反映。针对接口调用可能出现的情况,包括了以下几个方面。

systemStatus : 平台级的错误,如0代表成功,1代表token失效等等。

apiStatus : 业务级的错误,如0代表成功,其他数字代表其他含义。

data : 返回的业务数据,统一用map结构,即便只需要返回一个数组,也要包装成map返回,这样的好处在于前端可以统一用map来接收数据,容易定义出model对象。

需要注意一点,后台如果用Java开发,那么对于空对象,null,约定一下,凡是null的对象,不要放到返回的结构里面,这样的话,iOS和Android,在解析的时候,就都不出问题,Android解析成null,iOS解析成nil。如果接口返回了null对象,那么在iOS端,使用mj_extension这个框架做反序列化对象映射的时候,就会解析成NSNull,导致一些崩溃的出现。

timeStamp:时间戳;时间问题,校正前后端由于时区不同带来的误差。

上一篇 下一篇

猜你喜欢

热点阅读