文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python中应用requests库模拟postman请求携带token,使用get和post方法请求头携带token

2023-09-04 19:37

关注

背景:

实际开发中,Python程序中需要调用后台接口,充当前端,后端规定请求头需要携带token

封装的get和post类:

class RequestMethodCarryJson:    """    定义请求类型    以json方式传递参数    """    def __init__(self):        """初始化参数"""        self.data = {}        self.files = {}    def get(self, url, data, headers):        """        定义get方法请求        :return:        """        try:            return requests.get(url=url, data=data, headers=headers, timeout=60)        except TimeoutError:            return print('%s get request timeout!' % url)    def getCarryToken(self, url, data, headers):        """        定义get方法请求        :return:        """        try:            return requests.get(url=url, json=data, headers=headers, timeout=60)        except TimeoutError:            return print('%s get request timeout!' % url)    def post(self, url, data, headers):        """        定义post方法请求        post携带token,看起来不需要像get那样添加一个getCarryToken特有的识别方法        :return:        """        try:            return requests.post(url=url, data=json.dumps(data), headers=headers, timeout=60)        except TimeoutError:            return print('%s post request timeout!' % url)
class RequestMethodCarryFormData:    """    定义请求类型    以表单方式form-data传递参数    """    def __init__(self):        """初始化参数"""        self.data = {}        self.files = {}    def get(self, url, data, headers):        """        定义get方法请求        :return:        """        try:            return requests.get(url=url, data=data, headers=headers, timeout=60)        except TimeoutError:            return print('%s get request timeout!' % url)    def getCarryToken(self, url, data, headers):        """        定义get方法请求,额外添加token        :return:        """        try:            return requests.get(url=url, json=data, headers=headers, timeout=60)        except TimeoutError:            return print('%s get request timeout!' % url)    def post(self, url, data, headers):        """        定义post方法请求        这个携带json应该不需要额外改        :return:        """        try:            return requests.post(url=url, data=data, headers=headers, timeout=60)        except TimeoutError:            return print('%s post request timeout!' % url)

应用场景:

场景1——get请求时Headers携带token[传递参数以json格式]:

​token="里面填token内容"test1Info = test1(token)def test1(token):    """    携带token,    访问平台已经存在的数据库,    以json格式传递数据    :param token:    :return:    """    url = "http://127.0.0.1:8088/backup/url1"    headers = {'Content-Type': 'application/json;charset=utf-8', 'token': token}    data = dict()    data["param1"] = "param1"    data["param2"] = "param2"    resp = RequestMethodCarryJson().getCarryToken(url, data, headers).json()    dbInfo = resp["items"]    return dbInfo

场景2——post请求时Headers携带token[传递参数以application/x-www-form-urlencoded(表单)格式]:

token="里面填token内容"test2Info = test2(token)def test2(token):    url = "http://127.0.0.1:8088/testFormData/json/transfer"    headers = {'Content-Type': 'application/x-www-form-urlencoded', 'token': token}    data = dict()    data["param1"] = "param1"    """    这里不接受状态码    """    resp = RequestMethodCarryFormData().post(url, data, headers).json()    info = resp["items"]    if info == "格式正确":        return True    else:        return False

场景3——踩坑后总结成功的代码:

    """    请求头携带token拿取信息:    1-post-以json格式传递数据,请求头携带token成功    形如:    # resp = requests.post(url,json=data,headers=headers).json()    resp = RequestMethodCarryJson().post(url, data, headers).json()    2-get-以json格式传递数据,请求头携带token成功    # resp = requests.get(url,json=data,headers=headers).json()    resp = RequestMethodCarryJson().getCarryToken(url, data, headers).json()    :param platformInfo:    :return:    """

延伸理解:

相关资料参考:

postman中 form-data、x-www-form-urlencoded的区别_叫我峰兄的博客-CSDN博客

python requests 带请求头Token发起http请求_python request token_软件测试李同学的博客-CSDN博客

python发送requests请求时,使用登录的token值,作为下一个接口的请求头信息 - 大海一个人听 - 博客园 (cnblogs.com)

来源地址:https://blog.csdn.net/Elephantpretty/article/details/131697868

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯