写点什么

公司前端历数后端研发接口 5 宗罪

  • 2020-04-23
  • 本文字数:1807 字

    阅读完需:约 6 分钟

公司前端历数后端研发接口5宗罪

前端和后端应该相亲相爱,当然是建立在“专业”的基础上。


  • 罪状一:没有文档

  • 罪状二:文档不全

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

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

  • 罪状五:接口问题不断

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


罪状一:没有文档


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


1.为什么要文档?


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


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


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


2.文档怎么写?


在线文档。


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


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


本地文档。


本地文档一般用 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 里面必须包含所有返回状态,代表这个接口所有业务的情况,前端开发人员也就能针对每种情况进行处理。


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


罪状三:接口参数没校验


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


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


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


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


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


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


罪状五:接口问题不断


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


1.是否校验参数。


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


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


4.文档是否已经完备。

总结

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


本文转载自技术琐话公众号。


原文链接:https://mp.weixin.qq.com/s/LZ8bhkOQDjPzPF4t2sccPg


2020-04-23 17:38734

评论

发布
暂无评论
发现更多内容

你真的理解C语言的灵魂 “ 指针 ” 吗?(初阶篇)

Albert Edison

指针 C语言 野指针 9月月更

行业智能化走向何方?昇腾AICE带来的新范式,新起点

脑极体

为什么要用小程序容器做小程序生态

Geek_99967b

小程序 小程序容器 小程序开发

在小程序中开启直播的解决方案

Geek_99967b

小程序容器 小程序开发

跟着卷卷龙一起学Camera--AWB

卷卷龙

ISP 9月月更

深入学习SAP UI5框架代码系列之三:UI5 控件的渲染器

汪子熙

JavaScript 前端框架 SAP UI5 ui5 9月月更

SAP系统和微信集成的系列教程之二:如何通过微信公众号消费API

汪子熙

API 系统集成 SAP 微信开发 9月月更

SD-WAN网络可靠性设计

阿泽🧸

9月月更 网络可靠性设计

设计模式的艺术 第八章建造者设计模式练习(开发一个视频播放软件,为了方便用户使用,该播放软件提供多种界面显示模式,例如完整模式、精简模式、记忆模式、网络模式等。在不同的显示模式下主界面的组成元素有所差异。例如,在精简模式下只显示主窗口、控制条)

代廉洁

设计模式的艺术

动态规划-编辑距离

wing

技术团队如何高效落地代码CR

慕枫技术笔记

架构 后端 9月月更

LeetCode-21. 合并两个有序链表(java)

bug菌

9月日更 Leet Code 9月月更

剖析智能运维的五大应用场景

穿过生命散发芬芳

智能运维 9月月更

轻松理解20种常用AI算法

Baihai IDP

AI 算法

数据治理的内核:数据质量

Taylor

数据治理 数据质量管理 数据质量 数据生命周期

MVCC

急需上岸的小谢

9月月更

围绕“开源+深耕”策略和数字化监控手段,动态管理场景生态价值

易观分析

银行 易观 场景金融

SAP系统和微信集成的系列教程之一:微信开发环境的搭建

汪子熙

系统集成 SAP 微信开发 微信平台 9月月更

小程序容器技术加入到混合App开发队伍

Geek_99967b

小程序 混合开发

「工作小记」接口请求数据的缓存实践

叶一一

前端 设计思维 9月月更

深入学习SAP UI5框架代码系列之四:HTML原生事件 VS UI5 Semantic事件

汪子熙

JavaScript SAP SAP UI5 ui5 9月月更

时代变了,企业网站应该这么策划内容

石头IT视角

业务应用小程序化,一种潜在的技术趋势

Speedoooo

小程序 移动开发 小程序容器

C++学习------iso646.h与limits.h头文件的源码学习

桑榆

c++ 9月月更

小程序能否成为电商的突破口

Geek_99967b

小程序 小程序开发

计算机网络——速率相关的性能指标

StackOverflow

计算机网络 编程‘ 9月月更

ShareSDK Android端主流平台分享示例

MobTech袤博科技

an'droid

Vue基础语法--插槽(Slot)基础使用

Sam9029

Vue 前端 基础 9月月更

LeetCode-26. 删除有序数组中的重复项(java)

bug菌

9月日更 Leet Code 9月月更

DDD领域驱动设计

源字节1号

软件开发 前端开发 后端开发 软件设计思想

2022-09-06:以下go语言代码输出什么?A:Hi All;B:Hi go All;C:Hi;D:go All。 package main import “fmt“ func app() f

福大大架构师每日一题

golang 福大大 选择题

公司前端历数后端研发接口5宗罪_文化 & 方法_技术琐话_InfoQ精选文章