API 接口设计规范

2023-06-03 0 790

简述

这首诗撷取 API USB导则,目地是提供更多给研制相关人员做参照。

规范化是死的,人是活的,期望他们定的规范化,千万别被诚然。

路由器重新命名规范化

姿势后缀附注getget{XXX}getget{XXX}List追加addadd{XXX}修正updateupdate{XXX}留存savesave{XXX}删掉deletedelete{XXX}上载uploadupload{XXX}推送sendsend{XXX}

允诺形式

允诺形式叙述GETPOST追加统计数据PUT预览统计数据DELETE删掉统计数据

允诺模块

Query

url?前面的模块,放置允诺USB的模块统计数据。

Header

允诺头,放置公用模块、requestId、token、身份验证表头等。

Body

Body 体,放置允诺USB的模块统计数据。

公用模块

APP 端允诺

模块说明附注network网络WIFI、4Goperator运营商中国联通/移动platform平台iOS、Androidsystem系统ios 13.3、android 9device设备型号iPhone XR、小米9udid设备唯一标示apiVersionAPI 版本号v1.1、v1.2

WEB 端请求

模块说明附注appKey授权Key字符串

调用方需向服务方申请 appKey(允诺时使用) 和 secretKey(身份验证时使用)。

安全规范化

敏感模块身份验证处理

登录密码、支付密码,需身份验证后传输,建议使用 非对称身份验证

其他规范化

模块重新命名规范化 建议使用驼峰重新命名,首字母小写。

requestId 建议携带唯一标示追踪问题。

返回模块

模块类型说明附注codeNumber结果码成功=1失败=-1未登录=401无权限=403showMsgString显示信息系统繁忙,稍后重试errorMsgString错误信息便于研制定位问题dataObject统计数据JSON 格式

若有分页统计数据返回的,格式如下

{

“code”: 1,

“showMsg”: “success”,

“errorMsg”: “”,

“data”: {

“list”: [],

“pagination”: {

“total”: 100,

“currentPage”: 1,

“prePageCount”: 10

}

}

}

安全规范化

敏感统计数据脱敏处理

用户手机号、用户邮箱、身份证号、支付账号、邮寄地址等要进行脱敏,部分统计数据加 * 号处理。

其他规范化

属性名重新命名时,建议使用驼峰重新命名,首字母小写。

属性值为空时,严格按类型返回默认值。

金额类型/时间日期类型的属性值,如果仅用来显示,建议后端返回可以显示的字符串。

业务逻辑的状态码和对应的文案,建议后端两者都返回。

调用方不需要的属性,千万别返回。

签名设计

签名验证没有确定的规范化,他们制定就行,可以选择使用对称身份验证非对称身份验证单向散列身份验证 等,撷取下原来写的签名验证,供参照。

Go 签名验证

PHP 签名验证

日志平台设计

日志平台有利于故障定位和日志统计分析。

日志平台的搭建可以使用的是ELK 组件,使用 Logstash 进行收集日志文件,使用 Elasticsearch 引擎进行搜索分析,最终在 Kibana 平台展示出来。

幂等性设计

我们无法保证USB的每一次调用都是有返回结果的,要考虑到出现网络异常的情况。

举个例子,订单创建时,我们需要去减库存,这时USB发生了超时,调用方进行了重试,这时是否会多扣一次库存?

解决这类问题有 2 种方案:

一、服务方提供更多相应的查询USB,调用方在请求超时后进行查询,如果查到了,表示允诺处理成功了,没查到就走失败流程。

二、调用方只管重试,服务方保证一次和多次的允诺结果是一样的。

对于第二种方案,就需要服务方的USB支持幂等性。

大致设计思路是这样的:

调用USB时,将 Token 放到 Header 头中

解析 Header 头,验证是否为有效 Token,无效直接返回失败

完成业务逻辑后,将业务结果与 Token 进行关联存储,设置失效时间

小结

限流设计、熔断设计、降级设计,这些就不多说了,因为大部分都用不到,当用上了基本上也都在网关中加这些功能。

暂时就想到这么多,规范化这东西不是一成不变的,发现有不妥的及时调整吧。

你们USB的输入输出 Key,重新命名是用驼峰还是下划线?欢迎留言。

推荐阅读

一线技术管理者究竟在管什么事?

一个人被提拔,不仅仅是能力,而是信

API 接口设计规范

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务