公众号关注 “前端开发博客”

设为 “星标”,每天分享一个前端知识点!

来源:suo.im/5n3Dz3

  • 罪状一:没有文档

  • 罪状二:文档不全

  • 罪状三:接口参数没校验

  • 罪状四:没保证接口原子性

  • 罪状五:接口问题不断


今天一位前端开发人员扯起了后端接口的皮,那个兄弟对后端人员提供的接口很大的意见(我是司空见惯),不过他说的也确实有道理,所以结合我的见解,希望提供接口的人员能多加注意。

罪状一:没有文档

例如新的前端人员到了一个新的公司,使用接口时,问这个这个不知道,问那个那个不知道,要文档没文档,这绝对是前端人员最抓狂的事,心里肯定是一千只草泥马奔腾而过。

1.为什么要文档?

  1. 文档是当前开发者甚至后面的接盘侠(后面开发者)能够清晰往下做的指引。

  2. 即便是简单的东西,但如果不写文档,以后口口相传消耗的工作量会比写文档更多。

  3. 好记性不如烂笔头,一段时候后,可能连开发者都忘记接口的用途。

2.文档怎么写?

  1. 在线文档。

在线文档易于更新和他人查看,例如可以使用Swagger编写接口文档。

PS:Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。

  1. 本地文档。

本地文档一般用Word文档,但是比较不易传播,但能离线查看。

Final~

文档是及其关键的,无论是在线文档还是本地文档,有是关键。虽然写文档是麻烦的事,但对后端人员来说,是利人利己。

罪状二:文档不全

额,就是有了文档,文档里面对接口的描述也可能不全,可能缺每个参数详尽描述(取值范围、类型)、请求方式(GET、POST、PUT、DELETE)、返回数据的所有状态等等。这里面可能最缺就是返回数据的状态!

一般的返回数据结构~

公司的数据接口返回结构是

{
s : 0/ 1, //表示此操作的处理状态( status ),一般简单的成功 /不成功,使用 1/0 表示。
m : 'xxxx', //表示此操作的提示信息( message ),一般只用来显示操作失败时提示信息。
r : [], //表示此操作的返回值( result )
count : x //返回的数据条数
}

这种数据结构看起来没问题,确实也没大问题,问题就是出在s这个字段。有许多的接口不仅仅只有两种状态,成功状态只有一种倒是没问题,问题就出在失败状态,失败可能有很多情况,一个简单的s:0不能说明失败的原因(即便是有m提示信息,但用这个来区分很不靠谱,因为提示可能会变化),我们不总是仅拿m做显示用。

升级返回数据结构~

那位同事建议以下方式应答

{
s : 0/ 1/ 2/ 3, // 0代表正常,1是参数有误,2是用户不存在,3是用户没权限等等
m : 'xxxx', //表示此操作的提示信息( message ),一般只用来显示操作失败时提示信息。
r : [], //表示此操作的返回值( result )
count : x //返回的数据条数
}

m、r、count 可以保持不变,但是s里面必须包含所有返回状态,代表这个接口所有业务的情况,前端开发人员也就能针对每种情况进行处理。

Final~

文档最重要的部分是返回值的状态,我也建议上面的升级返回数据结构,这样就不存在任何不明朗情况。既然写了文档,就把文档写好,写明朗,这也是利人利己地方。

罪状三:接口参数没校验

这个前端人员倒不是很关注,因为本身调接口之前都会先做校验,后端做参数校验只是双重保证。我之前也做过一段时间后端,也犯过没校验参数的错,额,因为后来没有做后端,也就没有去修正。不过还是提醒后端人员,做好参数校验是第一步,不要偷懒了。

Final~

统一处理好接口校验,后端好好考虑下。

罪状四:没保证接口原子性

接口的原子性很重要,有时一个接口可能会干几件事,但不一定都能正常完成,这就导致可能存在原子性问题,接口不能准确被调用。

PS:原子性。一个原子事务要么完整执行,要么干脆不执行。这意味着,工作单元中的每项任务都必须正确执行。如果有任一任务执行失败,则整个工作单元或事务就会被终止。即此前对数据所作的任何修改都将被撤销。如果所有任务都被成功执行,事务就会被提交,即对数据所作的修改将会是永久性的。

Final~

原子性一定要保证,保证,保证!

罪状五:接口问题不断

前端开发人员调接口时候,可能会存在各自各样的问题,有问题可以理解,程序哪会没有bug,但不能太离谱啊,后端兄弟们。所以我觉得在给出接口之前自己明确几件事:

  1. 是否校验参数。

  2. 是否所有的情况都测试过了,如果可以请写单元测试。

  3. 是否返回数据准确明朗,响应状态码是否正常。

  4. 文档是否已经完备。

总结

后端人员多体谅前端人员,在出现问题时,先检查自身,别一上来就跟前端干起来,要是自己的问题就尴尬了。

- EOF -

推荐阅读  点击标题可跳转

面向后端的前端技术分享

程序员遇到 Bug 时的 30 个反应,你是哪一种?

一个普通前端程序员走过的路程

觉得本文对你有帮助?请分享给更多人

推荐关注「前端开发博客」,提升前端技能

如果觉得这篇文章还不错,来个【分享、点赞、在看】三连吧,让更多的人也看到~

公众号也开始通过互动率推送了,互动少了可能就很晚或者收不到文章了。

大家点个在看,星标我的公众号,就可以及时获得推文。

我和后端因为接口吵起来啦,还列了 5 锅罪相关推荐

  1. 漫画 | 上班第一天,前端把后端告上县衙,还列了 5 宗罪!

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 今天这篇漫画是「 互联网人吐槽大会系列 #1 」讲述的是前端 ...

  2. 前后端解析_好程序员Web前端教程分享前后端分离接口

    随着互联网的高速发展以及IT开发技术的升级,前后端分离已成为互联网项目开发的业界标准使用方式.在实际工作中,前后端的接口联调对接工作量占Web前端人员日常工作的30%-50%,甚至会更高.接下来的好程 ...

  3. 实战react技术栈+express前后端博客项目(8)-- 前端管理界面标签管理+后端对应接口开发...

    项目地址:https://github.com/Nealyang/R... 本想等项目做完再连载一波系列博客,随着开发的进行,也是的确遇到了不少坑,请教了不少人.遂想,何不一边记录踩坑,一边分享收获呢 ...

  4. 前端vue后端java,Vue调用后端java接口的实例代码_亦心_前端开发者

    前段时间 做了个学校的春萌项目,其中用到 先上后端接口代码: package controller; import net.sf.json.JSONObject; import util.DBUtil ...

  5. vue后端必须接口吗_前后端分离模式,后端说开发完才能给接口文档,合理吗

    背景: 汇总了下老王在其他平台的原创回复,欢迎关注老王原创公众号[软件老王],关注不迷路. 一.后端开发完接口才给出接口文档,合理吗? 本人所在的项目组做项目过程中,后端不会先给出接口文档,而是要等他 ...

  6. nginx学习笔记002---Nginx代理配置_案例1_实现了对前端代码的方向代理_并且配置了后端api接口的访问地址

    做个记录,以后做简单的nginx的时候拿过来就用 这个配置实现了,对前端html的方向代理,并且,配置了对后端api接口的方向代理 E:\nginx-1.14.0\conf\nginx.conf #u ...

  7. 基于json文件创建后端模拟接口

    json-server有很多接口: 目的:基于一个json文件就可以创建很多的后端模拟接口: (1)先创建一个json文件: (2)然后下载nodejs:下载 | Node.js 中文网  注意:下载 ...

  8. 微信小程序与后端Java接口交互-图书搜索实现

    完整微信小程序(Java后端) 技术贴目录清单页面(必看) 我们模拟实现一个微信小程序端关键字图书,然后显示图书列表的功能,如下图: 实现大体思路,前端用户输入关键字,通过bindtap事件,事件里得 ...

  9. SpringBoot+Vue+Mybatis-plus 博客(一):完成博客后台前端登录页面、后端登录接口

    SpringBoot+Vue+Mybatis-plus 博客:个人博客介绍及效果展示 SpringBoot+Vue+Mybatis-plus 博客(一):完成博客后台前端登录页面.后端登录接口 Spr ...

  10. thinkphp6搭建后端api接口

    这段时间学习了一下简单搭建一个api接口后端服务,现在记录一下. 本文主要内容 下载tp6 打开错误调试 隐藏入口文件 解决跨域问题-(使用全局中间件处理) 路由解决api版本控制 jwt token ...

最新文章

  1. 【深度学习入门到精通系列】开始恢复更新通知~!
  2. android开发系列之数据存储
  3. 5 款阿里常用代码检测工具,免费用!
  4. Linux下安装FTP
  5. iis php配置内部错误,iis 500 内部服务器错误 php
  6. django的admin界面删除因为外键约束导致失败
  7. 4由通道检测_博唐平四通道糖化血红蛋白检测仪通过上海临检中心性能验证(二)...
  8. ASP.NET 导入 Excel
  9. 从极速号码魔方软件中获取手机号码的城市号段归属地数据
  10. xpath 解析后和原网页结构不一致
  11. 从技术转管理的困惑(转)
  12. Console 接口介绍及电路设计
  13. el-menu菜单 -- unique-opened 子菜单唯一性失效
  14. 高精度地图:自动驾驶的向导
  15. Hikvison对接NVR实现WEB无插件开发包实现前端视频预览(html、vue、nginx代理)
  16. Codeforces Round #509 (Div. 2) F. Ray in the tube(思维)
  17. 你是人间的四月天(3)
  18. a50交割日时间表2021(a50三大主要功能)
  19. 什么是python 之禅?
  20. eMule连接到进ed2k网络分析

热门文章

  1. MATLAB用solve求解普通二元高次方程
  2. 信息安全实验:实现一个fake-wifi
  3. 蜂鸟数据Trochil:论述制定策略的两种主要方法:市场假设和瑞士法郎案例研究-构建更好的策略1
  4. 阮一峰老师-Auth 2.0 的一个简单解释
  5. Python-requests-12306-登陆
  6. C++——次幂运算表示
  7. android swstnw cn,恶意软件分析 URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析...
  8. python 包络线_如何简明易懂地说明数据包络线分析法(DEA)?
  9. banner图的开发
  10. 经济学人The right call on Huawei (20190427)