自定义应用API详情
我们在创建应用章节中已经学会了如何创建 API,本章即对 API 的各部分详细说明。
如图所示:
在 API 模块中,有五个区域。
API 列表
API 列表按字母顺序罗列该应用的所有 API,搜索框输入 API 可以进行检索,点击某个 API 后可对其进行编辑。
点击“新建 API”按钮可以创建新的 API,如图所示:
API:对应用户的实际请求 api,必填,尽量以英文字母为主,也可加数字。
API 名称:可省略,但加上更容易阅读理解。
API 描述:当该 API 的名称不足以说明功能时,需要描述来补充,一般在 API 文档中展示。
API 文档补充:当自动生成的 API 文档不足以让用户理解或者有一些地方需要进一步说明,或者调用该 API 有一些前提条件,那么就需要文档补充来解释,提供给用户注意。
API 分组:当该应用的 API 较多时,为了用户更容易检索、跳转、理解各部分,可以给 API 加个分组。
基础信息
在编辑 API 时,点击[基础信息]按钮,可以看到下图所示:
四个字段上面讲过了,忽略不计,删除按钮分别为删除当前 API 版本和整个 API。
右侧是 API 版本选择框和新建版本按钮。
我们来详细说下版本功能。
有第三方服务开发经验的同学可能深有体会版本功能的重要性,当你的产品作为第三方服务提供给其他人用时,一开始还好,但是在后续功能迭代时,你需要改变某个现有的 API。这时候如果没有版本控制,那么需要联系到所有使用该 API 的客户一一通知、协调,对方可能还不愿意改变或无法改变。
而有了版本控制后,只需要为该应用发布一个新版本即可,老版本依然被客户使用,客户收到通知时可以根据自身情况和进度慢慢将业务切换到新版本 API 上。
开发者创建 API 时会新建一个dev
版本的 API,在控制台对 API 的修改会实时更新到dev
版本,调试功能将默认调用dev
版本。
应用的默认版本为latest
,指向最新发布的一个版本,前端在调用 API 时如果未指定 API 版本,将会默认使用latest
。
当开发者发布应用版本后,所有 API 都会创建一个该版本的镜像供用户使用,类似于 NPM 包的概念,而且镜像版本不支持修改和删除。
发布应用版本将会为当前 dev
版本的创建两个镜像,一个是以版本号为基础的镜像,一个是latest
版本。
点击发布时可以选择版本号,假如我们已经拥有一个1.0.0
版本的应用修改后即将发布版本,那么版本号有三种选择,选大版本则是2.0.0
,适用于有大量更新的情况;选中版本是1.1.0
,适用于有特性更新的情况;选小版本是1.0.1
,适用于小修小补的情况。
API 配置
API 配置区域如图所示:
最上面的是 API 开关,关闭时将不再提供服务。
API 成本由系统自动根据步骤计算得出。
API 定价是开发者自定义的,不能低于成本。
当用户的一个请求过来时,用户的环境会扣除 API 定价的 RU,开发者会收到 API 定价-API 成本的 RU 利润。开发者可以兑换赚取的 RU 到自己的环境,或者在财务中心进行提现。
尽量将定价设置为合理范围,用户在选择应用时也会考虑是否有不合理的定价 API,10000×1 > 100×10,所以用的人多比定价贵更好,但是部分非常有价值的 API 可以合理调高。
再下方是选择返回的步骤数据,比如说右侧步骤中有两个 check 和 user ,一个是你进行逻辑判断的步骤,一个是查询相关数据步骤,而应用使用者在这里其实并不需要知道 check 的结果,那么只选择 user 步骤返回就行。步骤数据默认是全部返回的。
当你将是否需要token
开关打开时,就说明这个 API 需要从请求 headers 中的 authorization 鉴权用户 token 来证明该请求是正常来自用户的,同时在后面的步骤中才能在值来源
中拿到token数据
的userId
等信息。用户的 token 来自于 jwt 步骤,是用户登录时得到并保存在用户本地的。
所有非公开的 API 都要打开这一项,从而保护你的 API 不受恶意攻击。
如需了解更详细的 token 解释,可以查看用户系统最佳实践。
有 token 后可以进一步设置该 API 所需要的的权限。
选择无需权限
代表不会前置检查权限,由后续的步骤中做相应处理。
选择简单权限
后需要设置权限组
,填写相关权限项点击对号添加到权限组内。这会检查用户 token 中的数据项rights
,两者都是数组类型,如果有一项相符,则权限通过。这种由 token 包含权限信息的模式比较简单。
选择管理员权限
则代表该 API 只能由管理员 token 和步骤中的其他API
步骤调用。
选择用户系统
就是将会使用用户系统 Id:user
应用去检测权限。这是一个内置的权限处理,如果你有其他类型的权限系统应用,想接入这里,可以联系我们。
用户系统有一个表UserRight
,主键为userId appId target
,列为rights
。
此处的权限逻辑是这样的:
userId
来自于请求的 token 解析出来的数据。
appId
是本应用的 ID。
target
由下方两项决定。
这里的 目标参数来源
和步骤中的 值来源
一样,可以确定权限目标target
来自于哪里,比如此处我们设置为API 参数
,target 设为orgId
,那么查询用户权限的target
就是 API 请求中args
对象的orgId
值。模拟一个请求格式如下所示,那么此处要查询用户权限的target
就是firstOrg
。
{
"body": {
"appId": "example",
"api": "test",
"version": "latest",
"args": {
"orgId": "firstOrg"
}
}
}
然后下方是权限组,这里类似于简单权限,但是比较的对象就不是 token 中的数据,而是通过该用户 ID 加本应用 ID 再加上述target
的值查询到的用户权限数据rights
。
如果还是觉得不太清晰,可以查看组织系统最佳实践文章,有实际案例解释。
API 参数
API 参数的意思就是调用该 API 需要哪些参数,包含在上面的模拟格式中的args
中。
同时,也可以自动生成 API 文档和自动检测必要参数。
如图所示:
它会自动生成以下文档中的参数表:
当然,如果开发者要求参数为必填但请求中没有时,那么会报错:Missing required parameters
。
还有一些特殊参数,具体可以查看API 格式。
步骤
最后就是 API 的核心 步骤
了。
如图所示:
点击 添加步骤
可以增加一个步骤卡片,步骤卡片的右下角有两个按钮,左侧为 在该步骤前添加一个新步骤
,右侧为 删除该步骤
。
我们首先输入 步骤ID
以便区分不同步骤,再选择不同的步骤类型。
各种步骤类型有不同的功能,有的 API 可能一个步骤就完成了,有的可能需要几十个步骤(当然不推荐这样做,尽量将不同功能分为多个 API)。
所有的步骤组合形成了完整的逻辑,以一个 API 接口的形式对外提供服务,从而实现各种各样的功能,成为这互联网多彩的一部分。
至于步骤的所有类型详细介绍因为字数较多,所以放在下一章。