接口遐想

接口遐想

日常软件开发过程中,"接口"是所有程序员都避不开的一个话题,前端催着要接口,后端拼命写接口,接口不通改接口;那么接口到底是什么呢?他是怎么产生的呢?他为何有如此大的魅力让程序员们又爱又恨?我想一千个程序员心中就有一千种对接口的定义,这里就结合此时所想谈谈我对接口的理解。

  1. 接口的起源
    在互联网刚兴起的时代,用户访问网站,服务器通常是将整个页面响应到浏览器端,然而由于网络带宽等资源限制,早期的页面响应速度十分缓慢,用户体验也是极其糟糕;因为每次加载都需要响应整个Html页面,这使得浏览器与服务器之间频繁的发起远程请求获取服务器资源,这是对服务器资源的极大浪费;其实聪明的程序员们早已经发现了问题之所在,其实响应的页面有很多可以复用的部分,这些部分并不需要每次都通过请求服务器获取,很多时候页面只需要加载所需要的部分页面数据,因此ajax技术应用而生,通过ajax异步请求,可以在不刷新页面的情况下只加载页面需要变动的部分获取所需要的数据,这样不仅节约了服务器资源,用户也得到了更好的使用体验;所有很早之前前后端不分离是没有所谓的广义上的接口之说,随着web开发技术的前进,前后端逐渐开始分离解耦,接口也就随之而生;
  2. 接口的认知
    前后端分离的开发模式是软件开发的一大进步,前后端人员基于接口文档,各自按照同一种约定进行开发,缩短了开发时间以及减少了成本;从服务器响应html片段给前端,到只响应少量的json数据,一个完整的接口设计需要具备以下几大要素:
    1)传入参数
    2)响应参数
    3)URL统一资源定位符
    考虑到为了让接口的命名在未来需求变化的情况下仍然有意义,定义接口字段时需要让每个字段含义更为抽象,不要局限于UI或者原型图设计,需要在"所见即所得"的基础上抽象出更具普适意义且精简的字段定义接口的入参,例如“car”与“smallCar”(所见即所得定义)相比,car字段更具普适性,也更加简洁高效;
    大多数情况下接口的响应都包含状态码code、提示消息message以及响应的消息体data;关于状态码code的定义,建议使用自定义的状态码与服务器状态码进行区分,因为两者的分层是不同的,服务器状态码一般都有500、503、502等,业务中定义的状态码通常是10000
    ~20000范围之内,这种定义方式方便接口调用者快速定位问题以及响应状态的情况;
    接口设计看起来很简单其实不然,设计一个好的接口,需要站在一个更高的角度对事物进行一个抽象,日常开发中,接口文档通常需要在前后端协调下进行设计,其中最重要的是对字段的设计,如何让接口更具可拓展性以及抽象性,在页面修改的情况下能够快速适应要求都是考量接口设计优劣的标准之一;
    依据UI或原型图进行接口设计的过程中,一个开发页面一般定义几个接口呢?是通过一个接口响应所有的数据还是细分成页面块状元素定义多个接口返回数据,作为接口设计者都需要进行分析与思考;一般情况下,从以下几个方面分析每个页面接口个数;
    1)性能,接口个数增加会导致单页面加载发起的请求数也随之增多,从而影响性能;
    2)接口的复用性,接口复用性较高的情况下更倾向于减少页面定义接口的个数;
    3)编码效率,页面定义接口个数过多会增加开发量,也会增加项目中冗余代码;
  3. 文档的思考
    在实际开发过程中,高度文档化与敏捷开发是一种相互抑制的关系,对所有的开发需求进行高度文档化管理会耗费软件开发与设计人员大量的精力在文档的撰写以及维护上;但如若为了追求开发效率对开发流程不进行文档化管理,需求只通过几句简单的文字描述,最终的成品只是几个开发者合伙"捣鼓"出能够使用的功能以及一个git地址;整个项目没有一份真正有价值的文档可供参考了解,这样的项目整体上是失控且失败的;很大可能会导致项目后期因技术以及设计的不合理不得不进行项目的重构;所以学会如何高效撰写开发文档,提升需求设计能力以及文档的阅读能力是开发中不可或缺的环节。
  4. 开发文档的作用
    作为一个新手程序员,接到新的任务需求时总是急着去做点东西,不去思考整个需求的设计,往往从实现的角度去快速完成编码任务,但是草草进行编码行动,最终的产出可能漏洞百出,避免这种情况发生的有效手段之一就是撰写开发文档,因为撰写文档的过程是对编码实现过程的一种抽象,这样开发者就能从繁琐的编码实现角度抽离开来,站在一个系统设计者的角度对当前需求有更充分的认识;设计评审者相较于文档撰写者考虑问题更加抽象,他们对项目的具体细节不会非常熟悉,他们关注的是整个项目的核心需求以及技术上实现的难度。
  5. 结言
    “横看成林侧成峰,远近高低各不同”,站在不同的角度去看问题,得到的风景各有不同,每个人都会被自己的视野所局限,但是思想是没有边界的,程序是”死“的,编程的人是”活“的,重复的劳动中只有善于思考的人才能获得真正的智慧;假如肖邦会敲代码,指尖流淌的也一定是思想。
    以上论述皆为一个菜鸟程序员对于接口设计的浅显的见解,如有疏忽或述抒有误的地方,恳请指正;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值