干货,调用api获取禅道需求列表等
最近有用到开源版的禅道系统,版本10.0,为了更方便地获取禅道信息,我参照官方的说明写了禅道api调用的脚本。由于网上能搜到的博客基本没有,我就把自己的成果分享一下。在此申明,此文章内容是我自己原创,并不涉及公司机密,同时请各位请尊重我的劳动成果。
废话不多说,直接上代码再解释吧。
import requests import json class Zentao_cli(object): session = None #用于实现单例类,避免多次申请sessionID sid = None def __init__(self, url, account, password, override = False): self.url = url self.account = account #账号 self.password = password #密码 self.session_override = override #是否覆盖原会话 self.pages = { "sid": "/index.php?m=api&f=getSessionID&t=json", #获取sid的接口 "login": "/index.php?t=json&m=user&f=login&account={0}&password={1}&sid={2}", #登录的接口 "get_story_list_by_projectID": "/index.php?t=json&m=story&f=ajaxGetProjectStories&projectID={0}", "get_story_list_by_account": "/index.php?" } self.s = None self.sid = None def req(self,url): #请求并返回结果 web = self.s.get(url) if web.status_code == 200: resp = json.loads(web.content) if resp.get("status") == "success": return True, resp else: return False, resp def login(self): if self.s is None: if not self.session_override and Zentao_cli.session is not None: self.s = Zentao_cli.session self.sid = Zentao_cli.sid else: #新建会话 self.s = requests.session() res, resp = self.req(self.url.rstrip("/") + self.pages["sid"]) if res: print("获取sessionID成功") self.sid = json.loads(resp["data"])["sessionID"] Zentao_cli.sid = self.sid login_res, login_resp = self.req(self.url.rstrip("/") + self.pages["login"].format(self.account, self.password, self.sid)) if login_res: print("登录成功") Zentao_cli.session = self.s def get_story_list_by_projectID(self, projectID): #根据projectID获取需求列表 req_url = self.url.rstrip("/") + self.pages["get_story_list_by_projectID"].format(str(projectID)) web = self.s.get(req_url) if web.status_code == 200: resp = json.loads(web.content.decode()) for k,v in resp.items(): print(k,v) if __name__ == "__main__": cli = Zentao_cli("http://192.168.xx.xx/zentao", "xxxxxx", "xxxxxx123") cli.login() cli.get_story_list_by_projectID(17)
并没有依赖太多的库,只用了常用的requests和json模块,api调用的接口是从源码中找到的。类初始化的时候只需要传入禅道地址,帐号名,密码,然后调用获取的方法就行了。如果要做更多的操作,比如获取bug列表,提交bug,提交需求,就需要与源码中的函数一一对应写函数传参数进行交互。
如果本文章对您有用别忘了点个赞,加收藏。如果想要更多的函数实现,请在评论区艾特我,或者私信我,另外欢迎找我交流。
相关推荐
houmenghu 2020-11-17
我心似明月 2020-11-09
oraclemch 2020-11-06
ltd00 2020-09-12
康慧欣 2020-09-10
waveclouds 2020-09-04
蓝色深海 2020-09-15
jincheng 2020-09-01
思君夜未眠 2020-08-25
取个好名字真难 2020-08-06
歆萌 2020-08-03
阳光之吻 2020-08-03
婷婷小屋 2020-07-28
solarspot 2020-07-28
MLXY 2020-07-26
dxbjfu0 2020-07-26
songbinxu 2020-07-19
83520298 2020-07-06