1. 介绍
ZStack的API原语是JSON格式的消息,可以在各种消息总线上调用,目前ZStack使用的默认消息总线是RabbitMQ。由于这个特性,ZStack的API可以被封装成各种格式。为了方便大家使用,ZStack自带一个HTTP server,用户可以通过HTTP POST发送API JSON文本,该HTTP Server会自动将其转换成API消息实现调用。
我们未来会将ZStack API封装成Restful格式,但当前HTTP POST发送API JSON原语的方式将一直保留
ZStack的命令行工具(zstack-cli)是完全使用HTTP POST方法调用API的,为了方便用户阅读,我们用户手册对所有API的解释都是以zstack-cli为示例,每个cli命令都对应一个API。用户可以在中文用户手册获得每个API的详细解释。
通过zstack-cli的log,用户可以查看所有API调用和返回的具体格式(即HTTP POST的BODY)。
Log路径: /var/log/zstack/zstack-cli
我们建议用户通过tail -f /var/log/zstack/zstack-cli实时查看log,这样你可以在zstack-cli中执行API时实时观测到具体调用和输出。例如:
- >>LogInByAccount accountName=admin password=password
执行了登录操作后,你会看到LOG中输出类似如下内容:
- 2016-02-16 16:29:48,664 DEBUG [apibinding.api] async call[url: http://localhost:8080/zstack/api/, request: { "org.zstack.header.identity.APILogInByAccountMsg": { "password": "b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86", "session": {}, "accountName": "admin"}}]
- 2016-02-16 16:29:48,741 DEBUG [apibinding.api] async call[url: http://localhost:8080/zstack/api/, response: { "org.zstack.header.identity.APILogInReply":{ "inventory":{ "uuid":"083f3518d1bd469fa0ff789fc1a25382","accountUuid":"36c27e8ff05c4780bf6d2fa65700f22e","userUuid":"36c27e8ff05c4780bf6d2fa65700f22e","expiredDate":"Feb 17, 2016 12:29:48 PM","createDate":"Feb 16, 2016 4:29:48 PM"},"success":true}}]
这里http://localhost:8080/zstack/api/是HTTP调用的URL,request后的内容是API调用时HTTP POST的BODY,例如这里LogInByAccount这个API的HTTP POST BODY就是:
- {
- "org.zstack.header.identity.APILogInByAccountMsg": {
- "password": "b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86",
- "session": {},
- "accountName": "admin"
- }
- }
response后的内容是API返回的HTTP response的BODY,例如这里LogInByAccount的返回是:
- {
- "org.zstack.header.identity.APILogInReply": {
- "inventory": {
- "uuid": "083f3518d1bd469fa0ff789fc1a25382",
- "accountUuid": "36c27e8ff05c4780bf6d2fa65700f22e",
- "userUuid": "36c27e8ff05c4780bf6d2fa65700f22e",
- "expiredDate": "Feb 17, 2016 12:29:48 PM",
- "createDate": "Feb 16, 2016 4:29:48 PM"
- },
- "success": true
- }
- }
2. API的格式
ZStack API的调用和返回都是以JSON原语描述的,格式统一为:只有一个entry的JSON map,该entry的key是API描述符,value是承载具体内容的一个map。API描述符用来唯一标示一个API调用或返回,用户可以把它看做API的名称。在上一节的例子中,API调用的描述符是org.zstack.header.identity.APILogInByAccountMsg,API返回的描述符是org.zstack.header.identity.APILogInReply。
3. HTTP返回码
返回码 | 描述 |
---|---|
200 | HTTP调用成功。但并不代表API执行成功,API的执行结果由API返回中的success字段决定,true表示成功;false表示失败 |
其他 | 含义跟标准的HTTP返回码相同,例如500代表Internal Server Error;404代表No such page |