ZStack HTTP API使用

本文档介绍了ZStack的HTTP API使用方法,包括API格式、HTTP返回码、查询JOB状态的流程,以及登录、创建Zone等操作的Curl和Python示例。用户需通过HTTP POST发送JSON原语,利用返回的Job UUID轮询查询API执行状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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时实时观测到具体调用和输出。例如:

  
  
  
  1. >>LogInByAccount accountName=admin password=password
执行了登录操作后,你会看到LOG中输出类似如下内容: 
  
  
  
  1. 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"}}]
  2. 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就是:

  
  
  
  1. {
  2. "org.zstack.header.identity.APILogInByAccountMsg": {
  3. "password": "b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86",
  4. "session": {},
  5. "accountName": "admin"
  6. }
  7. }
response后的内容是API返回的HTTP response的BODY,例如这里LogInByAccount的返回是: 
  
  
  
  1. {
  2. "org.zstack.header.identity.APILogInReply": {
  3. "inventory": {
  4. "uuid": "083f3518d1bd469fa0ff789fc1a25382",
  5. "accountUuid": "36c27e8ff05c4780bf6d2fa65700f22e",
  6. "userUuid": "36c27e8ff05c4780bf6d2fa65700f22e",
  7. "expiredDate": "Feb 17, 2016 12:29:48 PM",
  8. "createDate": "Feb 16, 2016 4:29:48 PM"
  9. },
  10. "success": true
  11. }
  12. }

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值