在前端测试某个功能的时候,若某个接口报了error,想看看日志或者debug代码的话,如果刷新一下界面那成功的接口也会再次请求,后端日志也是一大堆,无关的请求也会跑到断点上来,那么我们想单独再执行一下怎么办呢?第一种:右键该接口,再点击Replay XHR即可单独请求该接口,这种方式有个缺点:只支持XHR这种请求,Fetch的不能支持(想不通,百思不得其解,未去深究,有知道原因的大神请告知)
所以官方不支持怎么办呢,Chrome提供了多种方式将该请求的命令拷贝出来,如果要拷贝出来在postman中执行,点击copy as cURL(bash),然后将该命令粘贴在postman中执行,但是我并不想打开postman
吐槽postman缺点:
1.需要联网登录账号,没有网?对不起,就算你保存到本地的请求都无法打开
2.隔三差五都在更新,每次打开基本上都有弹框提示更新,还无法关闭更新,好不容易适应的操作又要被迫改变,讨厌啊~~~
3.除了以上两点缺点,postman还是一款不错的工具,所以没有完美的软件,只有你更看中的东西能遮盖它的"缺点"
so,作为一名程序员,我自己写工具,将curl命令执行了不就ok了吗?
安装requests命令:
pip install requests
import requests, json
#变量f表示从浏览器拷贝的curl命令,注意只能是copy as curl(bash)这种方式
f = '''
curl 'https://example.url.cloud' \
-H 'Connection: keep-alive' \
-H 'authorization: Bearer your token' \
-H 'accept-language: zh' \
-H 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36' \
-H 'clientVersion: webapp' \
-H 'content-type: application/json' \
-H 'Accept: */*' \
--data-raw '["ca2d43d4-b008-4741-aba2-73cece647a97","50bf9d1d-fcb8-4b7f-81d6-3bf93ab268fb"]' \
--compressed \
--insecure
'''
url = ''
headers = {}
data = {}
for i in f.split(' '):
if i.__contains__('-H '):
h = i.replace("'", "").replace("-H ", "").replace("\n", "").split(": ")
headers.update({h[0]: h[1]})
elif i.__contains__('curl '):
url = i.replace("'", "").replace("\n", "").split("curl ")[1]
elif i.__contains__('--data-raw '):
data = eval(i.replace("'", "").replace("\n", "").split("--data-raw ")[1])
if len(data)!=0:
r = requests.post(url, headers=headers, data=json.dumps(data))
if r.status_code != 200:
print('请求失败:\n' + r.text)
else:
print(r.text)
else:
r = requests.get(url, headers=headers)
if r.status_code != 200:
print('请求失败:\n' + r.text)
else:
obj = json.loads(r.text)
print(json.dumps(obj, indent=4))
# print(r.text)