Python与Jira的搭配使用详解(4)
一、思考问题?
今天突发奇想,我想使用其他方式创建issue,怎么创建呢,如果使用以前的方法,好像有点复杂,有点麻烦,于是我们想能不能使用requests库来帮我们完成这个任务,但是发现我们卡在了第一步,使用F12浏览器调试模式获取不到登录接口,故而被难住了!!!,当然这是假的。后面我们使用其他工具发现了真正的接口,之前这个接口是由于被重定向了,所以找不到想要的接口。终于把这个问题解决了。
二、工具准备
2.1 Fiddler
第一种方式:Fiddler是一款抓包工具,可以用在手机、web页面进行抓包调试接口,极大的方便测试人员、开发人员进行调试。安装这个软件后可以发现有一个是302结果的请求地址,这个地址就是我们要的结果,然后查看请求方式、请求地址、请求数据、返回数据,获取我们想要的信息(cookies)。
2.2 charles
第二种方式:charles工具和Fiddler工具类似,也可以用来查看接口。具体请查看如下地址
三、连接Jira
3.1 获取到cookies
这里实现登录获取到了cookies的session_id,这是很重要的。后面我们都需要靠这个来进行接口的访问。进行其他操作。
import requests
from jsonpath import jsonpath
defgetcookie(username,password,server_url):"""
:param username: 用户名
:param password: 用户密码
:return:
"""
headers ={"Content-Type":"application/x-www-form-urlencoded"}
data ={"os_username":username,"os_password":password,"os_destination":"","user_role":"","atl_token":"","login":"登录"}# 通过参数allow_redirects禁用重定向
res = requests.post(url=server_url, data=data, headers=headers, allow_redirects=False)print(f"获取到的cookies:{res.cookies}")
获取第一次获取的cookies就可以进行操作了。这次是调用cookies进行操作。
defgetallcookies(url,cookies,params,headers):"""
:param cookies: 获取到的第一次的cookies
:param url: 另外一个地址
:param params: 请求参数
:return:
"""
res = requests.post(url,cookies = cookies,json=params,headers=headers,allow_redirects=False)# cookies["atlassian.xsrf.token"] = res.cookies["atlassian.xsrf.token"]print(res.text)
具体请参考接口文档进行操作,本次我们以第一个接口为例。
3.2 新建issue
请求地址:http://localhost:8080/rest/api/2/issue/
请求头:{“Content-Type”: “application/json”}
请求方式:post
请求cookie:使用上面获取的cookie
# 请求参数{"fields":{"project":{"key":"你的项目key或者ID"},"assignee":{'name':'经办人名字'},"summary":"REST ye merry gentlemen.","description":"Creating of an issue using project keys and issue type names using the REST API","issuetype":{"name":"故障"}}}
示例:
{"id":"39000","key":"TEST-101","self":"http://localhost:8080/rest/api/2/issue/39000"}
到此,我们可以使用其他接口,进行操作。这不就速度起来了!!
如图成功的界面:
版权归原作者 南风知我意。。 所有, 如有侵权,请联系我们删除。