123.md 9.8 KB

开放平台总体设计文档

功能模块

开放平台用户管理

禁用接口
  • 对于已经发布的接口,可以通过页面禁用接口。
  • 接口地址:/openapi/interface/disable/{1}
  • 请求方式:PUT
  • 平台: 总部端
  • 请求参数:
  • 响应参数:JSON格式

    {
    "code": 1000000,
    "msg": "操作成功",
    "data": null
    }
    
    导入接口
    • 可以通过excel导入其他环境已经配置好的接口。
    • 接口地址:/openapi/interface/import
    • 请求方式:POST
    • 平台: 总部端
    • 请求参数:multipart_file //excel文件
    • 响应参数:JSON格式
    • 响应示例: json { "code": 1000000, "msg": "操作成功", "data": null }
导出接口
  • 可以导出当前环境的接口信息。
  • 接口地址:/openapi/interface/export
  • 请求方式:GET
  • 平台: 总部端
  • 请求参数: json

    {
    "ids" : "1,2,3"    //多个接口id用逗号隔开。 不传则导出全部
    }
    
    • 响应参数:JSON格式
    • 响应示例: json { "code": 1000000, "msg": "操作成功", "data": [ { "id": 1, "name": "车场接口", "path": "/api/v1/car/parking", "method": "GET", "type": 0, "serviceType": 1, "version": "v1", "status": 1, "doc": "", "enable": 1, "limitCount": 100, "createTime": "2021-01-01 00:00:00", "updateTime": "2021-01-01 00:00:00", "createUser": "admin", "updateUser": "admin" } ] }
查询详情
  • 接口地址:/openapi/interface/{1}
  • 请求方式:GET
  • 平台: 总部端
  • 请求参数:路径参数
  • 响应参数:JSON格式
  • 响应示例:

    {
    "code": 1000000,
    "msg": "操作成功",
    "data": {
        "id": 1,
        "name": "车场接口",
        "path": "/api/v1/car/parking",
        "method": "GET",
        "type": 0,
        "serviceType": 1,
        "version": "v1",
        "status": 1,
        "doc": "",
        "enable": 1,
        "limitCount": 100,
        "createTime": "2021-01-01 00:00:00",
        "updateTime": "2021-01-01 00:00:00",
        "createUser": "admin",
        "updateUser": "admin"
    }
    }
    
    查询接口列表(分页)
    • 接口地址:/openapi/interface/page
    • 请求方式:GET
    • 平台: 总部端,开放平台
    • 请求参数:分页参数
    参数名 类型 说明 是否必填
    current int 页码
    size int 每页条数
    name string 应用名称
    serviceType string 服务行业
    status int 状态
    path string 访问路径
    • 响应参数:JSON格式
    • 响应示例: json { "code": 1000000, "msg": "操作成功", "data": { "total": 10, "pages": 20, "current": 1, "size": 10, "records": [ { "id": 1, "name": "车场接口", "path": "/api/v1/car/parking", "method": "GET", "type": 0, "serviceType": 1, "version": "v1", "status": 1, "doc": "", "enable": 1, "limitCount": 100, "createTime": "2021-01-01 00:00:00", "updateTime": "2021-01-01 00:00:00", "createUser": "admin", "updateUser": "admin" } ] } }

开放平台安全管理

开放平台安全校验模块负责对接车场、人行项目的安全校验,包括接口的安全校验、数据加密、数据权限校验、数据流量监控等。

token生成
  • 开放平台对外提供的接口,都需要通过token进行访问。
  • 开放平台用户,需要通过appId, appSecret, timestamp, sign生成token。
  • token具有有效期。有效期时长可以配置。默认为两天。
  • token是采用jwt生成的。
  • 接口地址:/openapi/token/generate
  • 请求方式:POST
  • 请求参数:JSON格式

    {
    "appId": "123456",
    "appSecret": "123456",
    "timestamp": 1610123456789,
    "sign": "123456"
    }
    
    • 响应参数:JSON格式
    • 响应示例: json { "code": 1000000, "msg": "操作成功", "data": { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNjEwMTIzNDU2LCJleHAiOjE2MTA1MjM0NTYsInVzZXJuYW1lIjoiYWRtaW4iLCJpYXQiOjE2MTA1MjM0NTYsImV4cCI6MTYxMDUyMzQ1NiwiaWF0IjoxNjEwMTIzNDU2LCJzdWIiOiIxMjM0NTY3ODkwIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" } }
token校验
  • 开放平台对外提供的接口,都需要通过token进行访问。
  • 开放平台用户,需要通过token校验。
  • 通过jwt解析token。对比jwt中的body数据是否正确。并获取当前应用的一些权限。

    签名方式
  • 所有的接口按照接口都需要参数签名。

  • 对所有的加密字段,通过ascii排序后,拼接成字符串,然后用appSecret进行aes加密。

  • 对于post, put请求,加密参数会在body中。

  • 对于get, delete请求,加密参数会在url中。

签名校验
  • 所有的接口都需要校验签名。
  • 对所有的加密字段,通过ascii排序后,拼接成字符串,然后用appSecret进行aes加密。
  • 对比签名是否正确。
接口权限校验
  • 开放平台对外提供的接口,都需要进行权限校验。
  • 查看当前应用的接口绑定关系。
  • 根据当前应用的权限,判断当前接口是否有权限访问。
接口流量监控
  • 开放平台对外提供的接口,都需要进行流量监控。
  • 每个接口都需要记录访问次数。按照秒,分,时,天,月,年进行统计。目前只统计当前值。就是当前秒,当前分,过时的就丢弃。
  • 对于接口都存在一个访问限制数。
  • 限制数目前设置的是当前秒的限制数。
  • 限制数达到后,接口会被禁用。

数据库设计

应用管理表

字段名 参数名称 类型 能否为空 说明
id 主键 int 应用id
name 应用名称 varchar(16) 应用名称
app_id 应用id varchar(32) 应用id
app_secret 应用密钥 varchar(32) 应用密钥
status 应用状态 int 应用状态 0 禁用 1 启用
create_time 创建时间 datetime 创建时间
update_time 更新时间 datetime 更新时间
user_id 创建人 varchar(16) 创建人
expiration_time 过期时间 datetime 过期时间
is_delete 是否已删除 int 0 正常 1 已删除
remark 备注 varchar(255) 备注

应用项目关联表

字段名 参数名称 类型 能否为空 说明
id 主键 int 主键
app_id 应用id varchar(32) 应用id 应用表的主键
project_id 项目id int 项目id 对应项目表的主键

接口管理表

字段名 参数名称 类型 能否为空 说明
id 主键 int 接口id
name 接口名称 varchar(16) 接口名称
path 接口路径 varchar(128) 接口路径
method 请求方式 varchar(16) 请求方式
type 接口类型 int 接口类型 0 上行 1下行
service_type 服务类型 int 1 车位 2 支付 3 月卡 4 车场 5 优惠券
version 版本号 varchar(16) 版本号 v1 v2
doc 接口文档 text 接口文档
status 接口状态 int 接口状态 0 禁用 1 启用
enable 是否启用 int 是否启用 0 禁用 1 启用
limit_count 限制次数 int 限制次数
create_time 创建时间 datetime 创建时间
update_time 更新时间 datetime 更新时间
create_user 创建人 varchar(16) 创建人
update_user 更新人 varchar(16) 更新人
is_delete 是否已删除 int 0 正常 1 已删除
remark 备注 varchar(255) 备注

应用接口授权关联表

字段名 参数名称 类型 能否为空 说明
id 主键 int 主键
app_id 应用id varchar(32) 应用id 应用表的主键
interface_id 接口id int 接口id 接口表的主键

数据接口列表