戚薇戚薇戚薇

让他夜夜
热液乳业人员

接口api开发中关于统一规范的一些非技术实践归纳

更新时间:2020-05-21 11:32:24点击:

这是笔者永远实际过程当中本人综合总结的少许关于范例的实际要点纪录,看本人的条记曾经造成了一篇文章的范围就共享出来,后续有增补会实时更新。

代码里逻辑校验与案牍提醒分别辨别

{    "msg":"订单不存在",    "code":10001,    "data":{     }}
{    "msg":"商品已下架",    "code":10002,    "data":{     }}

上方两处回笼后果中,code值差别显露差别的含意,做好全局唯独编码,留意不要造成重叠,数字的编码能够思量应用前缀作为差别交易范例的差别,比如:1xxx显露订单类,2xxx显露商户商品类 等等

别的,关于编码断定后要做好统一的表格文档,便于疾速查找和查对,差未几以下:

编码分析备注
1001订单不存在
1002商品已下架

如许实际的目标非常简略,交易方(api接口挪用方)可经历code举行交易调剂,而msg案牍则能够干脆表现,乃至能够经历统一的毛病案牍服无,应用code去换案牍。

交易毛病、非常bug毛病捕捉辨别

交易毛病和法式毛病被捕捉的非常是差别的,需求做好辨别。

非常捕捉的毛病消息尽管完备,便于追踪排查。

严禁字段透传和无掌握字段回笼

透传(通明传输)即不做任何字段的变动干脆发送给了挪用方。

关于从Db或微服无模块读掏出的源数据,严禁不经处分就干脆相传给了挪用方。

比方从MySQL中读掏出了以下数组数据:

[    {        "id":1,        "name":"jing",        "phone":13800138000    },    {        "id":2,        "name":"yang",        "phone":13800138001    }]

严禁干脆就相传给了客户端,而是要经由处分定制后发送给客户端,纵使发送给客户端的字段与读掏出来的字段一摸同样也要实行一遍赋值后再回笼。

可空字段、工具严酷商定好规律

{    "id":1,    "config": {        "is_term":true,        "time":"今年-08-30 23:23:23"    }}

假设上述布局中config字段是大概为空的,为空的显露技巧有多种以下:

{    "id":1,    "config": {}} {    "id":1,    "config": []} {    "id":1,    "config": ""} {    "id":1,    "config": null} {    "id":1}

不谈论类显露为空的技巧非常文雅、非常牛逼,而是必需断定好一种字段值可空时空值的显露技巧,一个项目中不要存在多套规律。

同理null''true1false0都要商定好统一的一套规律;而不是人人有人人的写法。

统一字段称号花样

字段称号的花样统一能够幸免很多繁难,要做到这一点非常简略也非常难,简略是由于只有团队确立起统一的规律便实行,难是大如京东如许的公司里字段都非常难做到统一统一套规律,经历遗留疑问非常难在短期内做到彻底的收敛统一。

字段定名规律有多套:

  • CamelCase 驼峰定名法,首字母小写驼峰定名,比方orderStatus

  • PascalCase 帕斯卡定名法,比方OrderStatus

  • SnakeCase蛇形定名法,有些又称之为下划线定名法UnderScoreCase,比方order_status

  • KebabCase 连字符定名法,比方order-status

  • Hungarian notation 匈牙利定名法,变量=属性+范例+工具形貌,此中每一工具的称号都请求有明白含意,能够取工具名字全称或名字的一片面,这个定名法相对繁杂,微软用的多,也是被喷的非常多的,有争议的不需求铺张精神干脆舍弃。

类定名技巧更高档?类定名技巧更文雅?有空争辩这个不如去学一门新说话新技术,学好了还阔以拿高薪,乌龟的屁股(龟腚)一套团队必需遵照的,朋友们统一应用即可。

京东微信端:PascalCaseCamelCaseSnakeCase混用,也另有诸如trialproduct如许的奇葩存在,杂沓

淘宝pc端:宛若统一做的非常好,均是CamelCase