• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python接口自动化之浅析requests模块post请求
    POST TIME:2021-10-18 13:07

    在上一篇Python接口自动化测试系列文章:Python接口自动化之浅析requests模块get请求,介绍了requests模块、get请求及响应结果详解。接下来介绍requests模块中的post请求的使用。

    一、源码解析

    def post(url, data=None, json=None, **kwargs):
        r"""Sends a POST request.
        :param url: URL for the new :class:`Request` object.
        :param data: (optional) Dictionary, list of tuples, bytes, or file-like
            object to send in the body of the :class:`Request`.
        :param json: (optional) json data to send in the body of the :class:`Request`.
        :param \*\*kwargs: Optional arguments that ``request`` takes.
        :return: :class:`Response Response>` object
        :rtype: requests.Response
        """
     
        return request('post', url, data=data, json=json, **kwargs)

    post请求参数解析:

    url: 请求的url,必填;

    data: 选填,请求参数;

    json: 选填,请求参数;

    kwargs:选填,可以传入headers、cookies等。

    二、data、json区别

    小伙伴们看完可能有点懵逼,data和json有啥区别呀,什么时候传入data,什么时候传入json。

    举个栗子:

    data = {
        "name":"vivi"
    }
    print(type(data))

    聪明的小伙伴立即抢答了,打印的是字典类型。

    那如果想把字典转换为json字符串呢,需要引用json模块。

    import json
    data = {
        "name":"vivi"
    }
    data = json.dumps(data)
    print(type(data))

    敲黑板:

    重点来了,post请求参数到底是传data还是json,这时候我们要看请求头里的content-type类型(具体参照接口文档,没有接口文档的抓包)。

    如果请求头中content-type为application/json, 为json形式,post请求使用json参数。

     

    如果请求头中content-type为application/x-www-form-urlencoded,为表单形式,post请求时使用使用data参数。

    三、form形式发送post请求

    当前接口的请求类型为application/x-www-form-urlencoded。

    # 导入requests模块
    import requests
    # 请求url
    url = "http://127.0.0.1:8000/user/login"
    # 请求参数
    payload = {
        "mobilephone":"1530272****",
        "pwd":"123456"
    }
    # form表单形式,参数用data
    res = requests.post(url, data=payload)
    print(res.text)

    响应结果为:

    {
        "status": 1,
        "code": "10001",
        "data": null,
        "msg": "登录成功"
    }

    四、json形式发送post请求

    当前接口的请求类型为application/json。

    # 导入requests模块
    import requests
    # 请求的url地址
    url = 'http://127.0.0.1:8000/user/login/'
    # 请求头
    headers = {"content-type":"application/json"}
    # payload 为传入的参数
    payload = {"username":"vivi","password":"123456","remember_me":"false"}
    # json形式,参数用json
    res = requests.post(url,json=payload,headers=headers)
    print(res.text)

    响应结果为:

    无响应???

    问题来了,如果请求类型为application/json,我偏要传入data参数呢?

    先按我们正常思维走一波:

    import requests
    payload = {"username":"vivi","password":"123456","remember_me":"false"}
    header = {"content-type":"application/json"}
    url = 'http://127.0.0.1:8000/user/login/'
    res = requests.post(url,data=payload,headers=header)
    print(res.text)

    响应结果:请求错误

    {"code":400,"data":[],"message":"Input error"}

    请求类型为application/json,如果想用data传参,需要将字典类型数据转换为json字符串

    import requests
    import json
    payload = {"username":"vivi","password":"123456","remember_me":"false"}
    header = {"content-type":"application/json"}
    # 字典转换为json串
    data = json.dumps(payload)
    url = 'http://127.0.0.1:8000/user/login/'
    res = requests.post(url,data=data,headers=header)
    print(res.text)

    本文主要讲解post源码,data、json参数应用场景及实战。接口使用的本地服务,如果大家想练手,可以使用公司项目或网上项目自行实战。

    本文主要讲解post源码,data、json参数应用场景及实战。接口使用的本地服务,如果大家想练手,可以使用公司项目或网上项目自行实战,希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python函数式编程中itertools模块详解
    • Python编程functools模块创建修改的高阶函数解析
    • Python编程itertools模块处理可迭代集合相关函数
    • Python中re模块常用方法总结分析
    • 解析Python扩展模块的加速方案
    • python中的zip模块
    • Python接口自动化浅析logging日志原理及模块操作流程
    • 详解Python模块化--模块(Modules)和包(Packages)
    • Python接口自动化之浅析requests模块get请求
    • 一篇文章带你了解python标准库--time模块
    • freeswitch开源通信 python模块介绍
    上一篇:Python接口自动化浅析Token应用原理
    下一篇:Python接口自动化之cookie、session应用详解
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信