REST API 是即时通信 IM 提供给 App 后台的 HTTP 管理接口,其主要目的在于为 App 后台提供一个后台管理入口。目前即时通信 IM 支持的 REST API 请参见 REST API 接口列表。
除了 REST API,App 控制台也可实现简单的数据管理、单发/群发消息,开发者可以在控制台进行简单的数据管理、查看及测试。相比之下,REST API 接口较为原始,但管理能力却更为强大。
为了安全性,REST API 仅提供 HTTPS 接口。
要调用 REST API,您必须已完成:
注意:调用 REST API 时请务必使用 App 管理员帐号,否则会导致不必要的调用错误。
REST API 的 URL 格式如下:
https://xxxxxx/$ver/$servicename/$command?sdkappid=$SDKAppID&identifier=$identifier&usersig=$usersig&random=99999999&contenttype=json
其中各个参数的含义以及取值如下(参数名称及其取值均区分大小写):
参数 | 含义 | 取值 |
---|---|---|
https | 请求协议 | 请求协议为 HTTPS,请求方式为 POST |
xxxxxx | 专属域名 | console.tim.qq.com adminapisgp.im.qcloud.com adminapikr.im.qcloud.com adminapiger.im.qcloud.com adminapiind.im.qcloud.com adminapiusa.im.qcloud.com |
ver | 协议版本号 | 固定为v4 |
servicename | 内部服务名,不同的 servicename 对应不同的服务类型 | 示例:v4/im_open_login_svc/account_import ,其中im_open_login_svc 为servicename 更多详情请参见 REST API 接口列表 |
command | 命令字,与 servicename 组合用来标识具体的业务功能 | 示例:v4/im_open_login_svc/account_import ,其中account_import 为command 更多详情请参见 REST API 接口列表 |
sdkappid | App 在即时通信 IM 控制台获取的应用标识 | 在申请接入时获得 |
identifier | 用户名,调用 REST API 时必须为 App 管理员帐号 | 参见 App 管理员 |
usersig | 用户名对应的密码 | 参见 生成 UserSig |
random | 标识当前请求的随机数参数 | 32位无符号整数随机数,取值范围0 - 4294967295 |
contenttype | 请求格式 | 固定值为json |
注意:
- App 服务端在调用 REST API 时,identifier 必须为 App 管理员帐号。
- App 可以在每次调用 REST API 时都生成管理员帐号的 UserSig,亦可生成一个固定的 UserSig 重复使用,但请特别注意 UserSig 的有效期。
REST API 仅支持 POST 方法,其请求包体为 JSON 格式,具体的包体格式参见每个 API 的详细描述。
需要特别注意的是,POST 包体不能为空,即使某条协议包体中不需要携带任何信息,也需要携带一个空的 JSON 对象,即{}
。
除非发生网络错误(例如502错误),否则 REST API 的调用结果均为200,真正的 API 调用错误码与错误信息在 HTTP 应答包体中返回。
REST API 的应答包体也是 JSON 格式,其格式符合如下特征:
{
"ActionStatus": "OK",
"ErrorInfo": "",
"ErrorCode": 0
// REST API 其他应答内容
}
应答包体中必然包含 ActionStatus、ErrorInfo、ErrorCode 这三个属性,其含义如下:
字段 | 类型 | 说明 |
---|---|---|
ActionStatus | String | 请求处理的结果,OK 表示处理成功,FAIL 表示失败,如果为 FAIL,ErrorInfo 带上失败原因 |
ErrorInfo | String | 失败原因 |
ErrorCode | Integer | 错误码,0为成功,其他为失败,可查询 错误码表 得到具体的原因 |
以下为通过 REST API 来 获取 App 中所有群组 示例。
HTTPS 请求:
POST /v4/group_open_http_svc/get_appid_group_list?usersig=xxx&identifier=admin&sdkappid=88888888&random=99999999&contenttype=json HTTP/1.1
Host: console.tim.qq.com
Content-Length: 22
{
"Limit": 2
}
HTTPS应答:
HTTP/1.1 200 OK
Server: nginx/1.7.10
Date: Fri, 09 Oct 2015 02:59:55 GMT
Content-Length: 156
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Methods: POST
{
"ActionStatus": "OK",
"ErrorCode": 0,
"GroupIdList": [
{
"GroupId": "@TGS#1YTTZEAEG"
},
{
"GroupId": "@TGS#1KVTZEAEZ"
}
],
"TotalCount": 58530
}
错误码 | 含义说明 |
---|---|
60002 | HTTP 解析错误 ,请检查 HTTP 请求 URL 格式 |
60003 | HTTP 请求 JSON 解析错误,请检查 JSON 格式 |
60004 | 请求 URL 或 JSON 包体中帐号或签名错误 |
60005 | 请求 URL 或 JSON 包体中帐号或签名错误 |
60006 | SDKAppID 失效,请核对 SDKAppID 有效性 |
60007 | REST 接口调用频率超过限制,请降低请求频率 |
60008 | 服务请求超时或 HTTP 请求格式错误,请检查并重试 |
60009 | 请求资源错误,请检查请求 URL |
60010 | 请求需要 App 管理员权限 |
60011 | SDKAppID 请求频率超限,请降低请求频率 |
60012 | REST 接口需要带 SDKAppID,请检查请求 URL 中的 SDKAppID |
60013 | HTTP 响应包 JSON 解析错误 |
60014 | 置换帐号超时 |
60015 | 请求包体帐号类型错误,请确认帐号为字符串格式 |
60016 | SDKAppID 被禁用。 |
60017 | 请求被禁用。 |
60018 | 请求过于频繁,请稍后重试。 |
60019 | 请求过于频繁,请稍后重试。 |
60020 | 您的专业版已到期并停用,请登录 即时通信 IM 购买页面 重新购买。购买后,将在5分钟后生效。 |
60021 | RestAPI 调用来源 IP 非法。 |
说明:由于 HTTPS 短连接建连耗时比较大,每次请求都有TCP + tls 握手开销,所以建议 REST API 长连接接入。
使用标准 HTTP 库的场景:HTTP1.0 需要指定请求头部 Connection: keep-alive,HTTP1.1 默认支持长连接;基于 TCP 封装 HTTPS 请求的场景,可以复用 TCP 连接来收发请求。
本页内容是否解决了您的问题?