写点什么

公司前端历数后端研发接口 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:38889

评论

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

Easysearch 节点磁盘不足应对方法

极限实验室

easysearch

StarRocks + Paimon 在阿里集团 Lakehouse 的探索与实践

StarRocks

OLAP StarRocks 湖仓一体 paimon 数据库 大数据

通义 R1-Omni 模型:通过音视频判断人物情绪;Google 开源端侧多模态模型 Gemma 3,最小 1B 参数丨日报

RTE开发者社区

鸿蒙之路:家国情怀下的坚守与成长

坚果

鸿蒙 HarmonyOS

华为云Flexus X实例首创柔性算力技术,让中小企业上云“化难为易”

YG科技

企业上云好处多多!华为云Flexus X实例有效降低上云门槛

YG科技

华为云Flexus X实例首创柔性算力技术,让中小企业上云“化难为易”

YG科技

中小企业上云必选!华为云Flexus云服务器X实例六倍性能、旗舰体验.

YG科技

“船小好调头”,华为云Flexus X实例为中小企业上云再添助力!

YG科技

抓准数字化转型“突破口”!华为云Flexus X实例助力企业高效上云.

YG科技

华为云Flexus X实例引领云服务变革,助力中小企业降本增效

YG科技

华为云Flexus X实例以柔性算力赋能中小企业,打造轻量云服务“标杆”.

YG科技

AI 生成的代码能用吗?亲测比手写更规范!

飞算JavaAI开发助手

企业级低代码架构演进:数字化管理系统中的多环境部署与合规性保障实践

不在线第一只蜗牛

低代码

Go 语言常见错误——方法函数

FunTester

更贴合中小企业业务需求!华为云Flexus X实例助力提速增效、硬核降本.

YG科技

以经济价格享受旗舰体验!华为云Flexus X实例打破传统云服务器局限

YG科技

【避坑指南】Java开发中10大高频错误,AI工具如何提前预警?

飞算JavaAI开发助手

云当先,圳有为,华为云携手深圳企业加速开发AI生产力

极客天地

SvelteKit 最新中文文档教程(2)—— 路由

冴羽

前端 前端开发 前端框架 Svelte SvelteKit

【实操回顾】基于Apache SeaTunnel从MySQL同步到PostgreSQL——Demo方舟计划

Apache SeaTunnel

华为云 Flexus 云服务器 X 实例:开启云上新篇,让业务自由驰骋.

YG科技

企业想要组织编程题考试?看这篇就够了!

轶天下事

鸿蒙全球电影票房排行榜应用

坚果

鸿蒙 HarmonyOS 坚果派

六倍性能,旗舰体验!华为云Flexus X实例以柔性算力引领云服务变革

YG科技

AI 编程工具哪家强?5 款主流 AI 代码生成工具横向测评

飞算JavaAI开发助手

AI焦虑之前,先看看你的底层数据准备好了没

赛博威科技

数字营销 赛博威 MDM主数据

鸿蒙原生驾考题库

坚果

鸿蒙 HarmonyOS

华为云Flexus云服务器X实例:柔性算力新物种,开启企业云上跃级体验

YG科技

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