接口式开发下出现的问题
接口式开发模式下,前端需要保证无论后端接口反回什么样的结果(包括HTTP状态为4XX和5XX时),程序都能够按预期的方式进行工作。如果前端对接口的每一次请求都要一步步验证结果的有效性,并在得到非预期结果时做错误处理,那就太过繁琐和枯燥了,并且这样的代码也无法进行高效的维护。
在接口式开发模式下,后端需要保证无论前端以什么样的参数来调用接口,程序都可以正常工作。并在参数或用户权限不满足要求时给出必须的提示。如果语义相同的请求参数在不同接口中的参数名称不一样,那对前端和后端的程序员们来说都是灾难性的。
定义一个好的接口式开发规范可以有效解决这些问题。
接口式开发的规范包括但不限于以下内容:
- 统一所有接口反回结果的格式;
- 定义通用请求参数。
统一接口反回结果的格式
只有把所有接口反回结果的格式统一了,前端才能方便的写出,能够高效处理所有接口反回的预期和非预期结果的代码。并且这部分代码应该放在前端的框架之中,而不应该在每个接口请求中有所体现。
统一接口反回结果的格式应体现在以下几点:
- 定义接口最外层反结构,保证所有能够正常反回(不会出现HTTP或服务器层错误时)的接口,反回值的最外层结构是一致的;
- 定义接口状态码(接口程序状态,而非HTTP或服务器状态),方便前端代码根据状态码对接口的反回结果进行分类处理;
- 定义与接口状态码相对应的状态信息,方便开发人员调试排错;
- 定义部分通用的反回值字段名(非最外层),节约前后端交流成本。
定义通用请求参数
每个接口可接受的参数不尽相同,但也有很多接口可以接受同样的参数;比如所有列表类接口都可以接受当前页(page)和每页显示信息的条数(pagesize)这两个参数。如果在不同的列表接口中这两个参数的名字不一样,对于优秀的前后端程序员们来说可都是个让人头疼的问题呢。为解决这个问题,可以为所有表达同一语义的参数在所有接口中保证参数名的统一。
如果接口需要有用户身份才能请求,而又无法使用浏览器的cookies提供用户身份信息时,就需要为所有这些需要用户身份的接口加一个通用请求参数来传递用户身份信息了。你敢想像,每个接口中接受用户身份信息的参数名都不相同的场景么。
时间戳(timestamp)和客户端签名(sgin)这两个请求参数在需要安全验证的接口中是必不可少的,最好把它们也统一规范好。
小结
统一接口最外层反回值结构可以给前端开发创造很多便利,节约前后端开发成本,提高程序可维护性;但这需要在后端程序上花点功夫。具体方式后续章节会有案例说明。
通一请求参数可以在很大程度上节约交流成本,大大减少产生bug的机会,提高程序的可维护性;但这需要前端和后端程序员们共同遵守提前约定的规范来开发才能达到目的。
网友评论