新版API接口文档

新版API接口文档

一、API接口请求规范

  • 接口域名: https://api.jushuitan.com/

  • 线上环境必须是https协议,苹果已声明必须使用https

  • request、reponse的数据包: 使用json格式,字符集必须为utf-8

  • 使用gzip方式请求,以便提高接口的传输效率

  • 出入参数以驼峰规则,类似userName

入参协议示例:
{
    "name":"名字 [require | string | min:2 | max:8]",
    "age":"年龄 [require | int | min:1 | max:150]",
}
出参协议示例:
{
    "data":{
        "userName":"名字 [require | string | min:2 | max:8]",
        "age":"年龄 [int | min:1 | max:150]",
        "appVersion":"应用版本号 [string]",
        "img":[
            {
                "site":"图位号[require | int]",
                "file":"图片文件名.jpg[require]"
            }
        ]
    },
    "code":0,
    "act":0,
    "msg":"status message [string]"
}

二、API错误码规范

  • 字端描述code:code对应一种特定的错误码

  • 字端描述act:act对应一种特定的前端动作,act和code是一对多的关系;code=0 业务正确,code>0 业务错误,code<0 系统错误(会新增网关系统错误/服务端系统错误等)

  • 字端描述msg:根据act来判断是否需要做msg显示

  • act 动作码表

动作码表(act)对应动作
0正确,无动作(Web/App)
1登出,需要重新登录(Web/App)
2关闭app(App)
3强制升级,升级文案为msg(App)
4需要强提示用户,模态对话框,文案为msg,点击确定的时候关闭当前界面
5需要弱提示用户,弹出toast,文案为msg
  • code 系统错误码表

业务层状态码:大于0,分为以下两种,后续会扩展

finshcodeact描述错误归属
100001~2000000请求正确,业务错误业务返回前台做特定处理
1~1000005请求正确,业务错误需要弹出toast
00成功
-11token失效系统级错误码
-22危险用户系统级错误码
-33客户端版本过低系统级错误码
-44由于某些特殊原因被取消调用,通过接口弹出模态对话框,进行强制阻隔系统级错误码
-100005此段开始定义网关api错误系统级错误码,api错误码--------------------------------
-100015api 路经找不到网关错误
-100025api 调用超时网关错误
-100035api 时间偏差较大,风控风险,或者客户端需要时间校准网关错误
-100045api header 格式出错,少必要字段网关错误
-100055api header appkey 出错,风控风险网关错误
-100065api header appsign 出错,风控风险网关错误
-100075api request 格式错误,非json格式,新老接口通过版本区分网关错误
-100085api request 缺少部分通用参数缺失网关错误
-105015api管理相关,接口通过审核后未及时上线api管理相关错误
-105025api管理相关,api服务未注册,如api未通过审核api管理相关错误
-105035api管理相关,api方法未注册,如api未通过审核api管理相关错误
-106015网关调用后台服务相关异常后端服务调用异常预留)--------------------------------
-110005此段开始定义网关spi错误spi错误码(预留)--------------------------------
-120005网关安全类错误网关安全错误(预留)--------------------------------
-120015单位时间应用访问次数超出网关安全错误
-120025单位时间api访问次数超出网关安全错误
-120035单位时间token访问次数超出网关安全错误
-120045单位时间设备访问次数超出网关安全错误
-200005此段开始定义网关聚合类错误网关聚合类接口错误码--------------------------------

三、前后端接口通信协议约定

通信采用https的post方式进行数据交互。通信协议中header必须包含以下内容:
请求头类型请求头定义描述
通用jst-pv: 1.0.0网络通信协议版本号起始值0.9.0
通用jst-sdkv: 1.0.0网络库SDK版本号起始值0.9.0
通用jst-appkey:ios_pda_global大前端领域内端的标识类型包含ios/android/flutter/mp/h5/web,pda、pda_global代表业务
通用jst-ts: 1488445016324请求时间戳精度到ms
通用jst-screen: 1080;1812;xxhdpi设备屏幕的信息格式:代表长,宽,精度
通用jst-static: Android;5.0.2;phone;Xiaomi;Redmi Note 2手机的部分静态信息格式:手机类型、系统版本号、手机厂商、手机型号,后续可能会再扩展增加,对应字段获取不到时保留“;;”。适用于Android、iOS、Flutter、以及能获取这类静态数据的宿主环境。参考:IOS;10.2;phone;iphone;iPhone 6
通用jst-ssotoken: 352bb25254499bba4dca64f85e29013d登录态信息当用户登录时,后端会将登录信息sso_token带入Cookie,此时客户端通过CookieMananger进行管理,前端按照Cookie方式进行管理。登录时做本地保存,用户登出时统一进行Cookie清除。
for appjst-appv: 2.2.0app版本号对应app每个需求版本
for appjst-appb: 96app编译号针对appv进行进一步的区分,用于网关/服务端做兼容处理,例如2.2.0可能会有91、92两个版本
for appjst-channel: appstoreapp的渠道来源iOS:appstore;Android:yingyongbao 应用宝市场、360 360市场、baidu 百度市场、wandoujia 豌豆荚市场、xiaomi 小米市场、meizu 魅族市场、 huawei 华为市场、 chuizi 锤子市场 、 oppo oppo市场 、 vivo vivo市场 、jst 升级或者刷二维码的android用户
for appjst-devid: 861759037761110设备唯一识别号需要保证唯一,app卸载重装不能变,ios/android/flutter各端需要传
for appjst-n: wifi当前网络类型网络类型 2g、3g、4g、5g、wifi,有网络切换需要进行切换监听
for appjst-location: 120.111394;30.269177定位信息业务层面有使用定位信息,那定位成功后必须传递,格式"经度,维度",保留6位小数可以达到约1米精度。
for appjst-sign: gde89898wq98ewhjkjn2kj282加签信息用于防止中间人攻击

签名的生成算法(Signature)

此为基本安全验证机制,必须使用,签名不正确服务端将拒绝请求访问。各端都需要有一个secret,iOS、Android、H5都不同,防止各端同时被破解,android需要写到so里面

接口签名规则:

  • 所有 “jst-” 开头的自定义请求头都参与加签,按照首字母进行ASCII码顺序排列
  • 再将请求所有业务参数按照首字母进行ASCII码顺序排列
  • 拼接字符串,密钥+jst-开头的所有请求头参数+ resquest body,例如:sgin=sha1(secret=1755c118e8859eb0&jst-appb=95&jst-appkey=fitness&jst-appv=2.4.1&jst-channel=jst&jst-devid=861365031971224&jst-pv=1.0&jst-screen=1080,1920,px&jst-sdkv=1.0.0&jst-timestamp=1496211400424&data={“cityId”:12974})
  • 将签名后的值,传入请求头jst-sign
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值