在前后端程序员分工协作愈加普遍的今天,不但带来了效率上面的提升,也带来了诸多协作上的问题,本次开发手册新增的前后端规约旨在解决前后端程序员协作上的问题以及让大家规避常见的易于疏漏的错误。
正所谓“没有规矩,不成方圆”,大到前后端API的约定,小到前后端的时间格式约定,在现在的前后端协作当中存在着这样的问题,用苹果的宣传语来讲便是“唯一的不同,是处处不同”,每个系统都对应着自己的一套前后端约定非常不利于维护,混乱的约定更让系统接手与维护的人头痛不堪。规矩并非枷锁,而是老司机们上路的安全带,有了它,才能让我们在程序的世界里安全的驰骋,去最大可能的提升效率,去创造更大的奇迹。
API是前后端交互的基准石
在前后端交互的过程当中,API是重中之重,一个好的API应该能够明确协议、域名、路径、请求方法、请求内容、状态码、响应体等7个重要要素。一个好的API约定会让前后端双方能够为接下来的开发工作节省许多时间和沟通的成本,是我们前后端协作的基石。
神奇的大整数精度丢失
不同于后端程序的各种数字类型的明确区分,在JS的世界里数字只有一种类型,那就是Number类型,它其实是双精度浮点数,因此,它造成的麻烦总是使人困惑和痛苦,当我们将一个过大的整数传递给前端的时候,想象一下当它超过了双精度浮点数能最精确表示范围的时候会出现怎么样的悲剧吧?欲知详情如何,请见嵩山版开发手册吧。
系统错误信息与用户提示信息傻傻分不清楚
你是否曾经把异常带到了页面上?你是否把系统的错误提示发给了一脸懵的用户?今天,前后端规约将助你摆脱这样尴尬的境遇。用户体验不仅仅是产品设计需要考虑的部分,作为技术人的我们更应该注重产品本身的质量,因此用户提示一定要与系统本身的错误区分开,给用户更友好的提示也是系统鲁棒性的象征,另外发生错误的时候返回给前端的信息除了上面两种错误信息再搭配上错误码与HTTP状态码一起食用更香哦。
长度微妙的URL参数传递
很多场景需要我们用URL来做前后端的参数传递,但是比较微妙的是URL有最长长度的限制,而众多浏览器对URL最大长度限制却是不同的。不明确的地方都是不易察觉的深坑,不知道栽进去了多少的仁人志士,为了规避这样的深坑,前后端规约中特别指出,对于URL长度限制采用所有浏览器限制的最小值,为2048字节。
测试题大闯关
上面简单介绍了一下本次《Java 开发手册(嵩山版)》的一些有趣知识给大家品尝,更详细的内容还请参阅开发手册中的内容,相信能够给大家带来满满的收获。“纸上得来终觉浅,绝知此事要躬行”,本次我们还特别综合过往的规约和新增修订的内容给大家带来了一套试题,相信小伙伴们都迫不及待的要来试试啦,那么接下来就让我们开启一场激动人心的规约大闯关吧!
1 服务端发生错误时,返回给前端的响应信息必须包含以下哪几个部分?
A. HTTP状态码
B. errorCode
C. errorMessage
D. 用户提示信息
2 以下哪些时间类型在规约中不允许在程序中使用?
A. java.sql.Date
B. java.sql.Time
C. java.sql.Timestamp
D. java.util.Date
3 以下哪些选项不符合前后端交互的JSON格式数据中key的编码风格:
A. assetStatus
B. error_message
C. 3days
D. msg
4 前后端的时间格式统一为____,统一为GMT。
A. yyyy-MM-dd HH:mm:ss
B. yyyy-mm-dd HH:mm:ss
C. YYYY-MM-dd HH:mm:ss
D. yyyy-mm-DD HH:MM:ss
5 HTTP请求通过URL传递参数时,不能超过多少字节?
A. 1024字节
B. 2048字节
C. 4096字节
D. 8192字节
6 前后端交互的API,以下说法正确的是:
A. 请求的路径可以使用动词、名词、推荐使用名词单数
B. URL路径中单词要使用驼峰分隔
C. 路径禁止携带表示请求内容类型的后缀
D. 响应体body可放置多种数据类型,由Content-Type头来确定
7 对于日志的相关描述,下面正确的有?
A. 所有日志文件至少保存7天
B. 根据国家法律,网络运行状态、网络安全事件、个人敏感信息操作等相关记录,留存的日志不少于六个月,并且进行网络多机备份
C. 应用中的扩展日志(如打点、临时监控、访问日志等)命名方式:appName_logType_logName.log
D. 在日志输出时,字符串变量之间的拼接使用占位符的方式
8 以下说明属于正确的前后端规约内容的有哪几项?
A. 推荐在接口路径中加入版本号,来进行相应的版本控制
B. 服务端返回的数据,推荐使用JSON格式而非XML
C. 服务器返回信息必须被标记是否可以缓存,如果缓存,客户端可能会重用之前的请求结果
D. HTTP请求通过body传递内容时,必须控制长度,超出最大长度后,后端解析会出错
9 常见的HTTP状态码以下描述错误的是:
A. 401: 请求要求身份验证,常见对于需要登录而用户未登录的情况
B. 402:服务器拒绝请求,常见于机密信息或通过复制其它登陆用户链接访问服务器的情况
C. 501:服务器不支持请求的功能,无法完成请求
D. 502: 服务器产生内部错误
10 对于前后端传递整数的场景,当十进制整数大于等于多少位时,服务端需要采用String类型返回防止精度丢失?
A. 14
B. 15
C. 16
D. 17
11 对以下关于错误码叙述正确的是?
A. 错误码应该体现错误等级以及其版本号
B. 错误码在某些特殊场景下可以直接输出给用户作为提示信息使用
C. 错误码之外的业务独特信息由error_message来承载,而不是让错误码本身涵盖过多具体业务属性
D. 错误码使用者避免随意定义新的错误码