Chatopera
类接口规范
发送请求
Chatopera
实例的核心接口是command
,以下也使用Chatopera#command
来指这个接口,该接口是对 RestAPI Request 的高级封装,内部完成签名认证,RequestHeaders和RequestBody等处理。
接口规范
result = chatopera.command(method, path [, body])
提示: result 返回在 Node.js 中使用
await
或Promise
,参考快速开始;其它语言直接用=
便可获取。
参数说明
name | type | required | description |
---|---|---|---|
method | string | ✔ | 对于资源的具体操作类型,由 HTTP 动词表示。有效值包括GET ,POST ,PUT ,DELETE 和HEAD 等 |
path | string | ✔ | 资源的执行路径,通常包含资源实体名称或唯一标识,也可能在 path 中使用queryString 传递参数 |
body | JSON 数据结构 |
❓ | body 是请求中的数据,对应 RestAPI 中的 Http Body |
method
不同动词代表的含义一般如下:
- GET - 从服务器取出一项或多项资源;
- POST - 在服务器创建一个资源;
- PUT - 在服务器更新一个资源;
- DELETE - 在服务器删除一个资源。
还有更多类型的method
,没有上述几种常用,在此不进行赘述。
queryString
是 URL 的一部分。典型的 URL 看起来像这样: http://server/resource?foo=A&bar=B。其中,foo=A&bar=B就是queryString
,通常用来传递参数,这个例子中包含两个参数:foo
值为A
;bar
值为B
。在下文中,path
参数中可能包含queryString
,形式如foo={{var1}}&bar={{var2}},需要把{{var1}}
和{{var2}}
替换为实际值。
body
数据是 JSON 格式的,不同语言对于 JSON 格式支持方式不同。JSON是一种轻量级的数据交换格式,描述了使用键值对、数组、字符串、数字、日期和布尔类型等值存储对象。JSON在不同语言下,等价数据结构如下。
语言 | JSON Object | JSON Array |
---|---|---|
JavaScript | {...} |
[...] |
Java | org.json.JSONObject | org.json.JSONArray |
PHP | 基本类型array |
基本类型array |
Python | 基本类型dict |
基本类型list |
Go | map[string]interface{} |
[]map[string]interface{} |
下文表述时,统一使用JSON
,JSON Object
和JSON Array
代表 JSON 数据结构和其不同语言下的等价数据结构。
提示: 相对而言,JSON 等价的数据结构,在获取
JSON Object
的键值或JSON Array
的长度和成员时,语法不同,但都易于掌握。在使用时,参考不同 SDK 的示例程序。
body
是否必填以及是JSON Object
还是JSON Array
,取决于method
和path
的值,不同method
和path
的组合对应了不同的接口功能,满足不同需求,下文将介绍满足各种需求的method
和path
,并各个说明body
参数。
返回值
返回值即请求结果,针对接口定义,Chatopera#command
的返回值result
是 JSON Object
,并有以下属性。
key | type | description |
---|---|---|
rc |
int | response code,返回码,大于等于 0 的正整型。0 代表服务器端按照请求描述,正常返回结果;rc 不等于 0 是代表异常返回。 |
data |
JSON | 数据资源。正常返回时,服务器端执行逻辑成功,比如查询时,data 就是查询结果。 |
msg |
string | 消息,当服务器端执行请求成功,并且不需要返回数据资源时,通过 msg 代表文本信息,比如提示信息。 |
error |
string | 异常消息,当服务器端返回异常时,具体出错信息包含在error 中。 |
total |
int | 分页,所有数据记录条数。 |
current_page |
int | 分页,当前页码,(分页从 1 开始)。 |
total_page |
int | 分页,所有页数。 |
每次请求结果中,rc
是必含有的属性,其它属性为可能含有。不同rc
的正整数形代表不同的异常,data
、status
以及分页信息,则因method
和path
而异,以下进行详细介绍。
提示: 不同语言对返回值可能进行了封装,但是不离其宗,都是基于以上定义,比如 Java SDK 中,定义
com.chatopera.bot.sdk.Response
作为Chatopera#command
接口返回值,Response
类提供getRc
、getData
和toJSON
等方法,提升代码可读性。在使用时,参考不同 SDK 的示例程序。
下文中使用的method
,path
,body
和result
等均代表以上介绍的概念。