【Requests 库做接口自动化备忘】

一、Content-type常用的几种类型

Content-type: 指内容类型编码,互联网媒体类型 也叫MIME类型

它是http请求头和响应中的字段,作为请求头时告诉服务端发送的数据类型,以及响应时返回的数据类型

  1. application/x-www-form-urlencoded
    使用表单形式提交,一般是post请求

  2. multipart/form-data
    多媒体类型,用来传输文件,图片等

  3. application/json
    使用JSON格式传输文件,是前后端传输数据常用的一种方式

二、requests 不同参数发送请求时携带的 Content-type 示例
1.params参数
payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
 
r = requests.get('https://httpbin.org/get',  params=payload)

print(r.url)
# params 参数会将请求参数放到地址栏中
> https://httpbin.org/get?key1=value1&key2=value2&key2=value3 

2. json 参数
 payload = {'key1': 'value1', 'key2': 'value2'}
 使用 json 会把参数 payload 以application/josn形式传输
 resp = requests.request("post", url=url, headers=headers, json=payload)
 
 3.data 参数
 payload = {'key1': 'value1', 'key2': 'value2'}

r = requests.post('https://httpbin.org/post', data=payload)

 data 可以是字典 也可以是 字节序列,文件对象
 requests 会根据传递的参数不同来进行解析

 4.files 参数
 files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
 字典类型,传输文件

三 requests 上传文件
1.方式1:

 不构造请求头,发送请求时requests默认构造headers的Content-Type
 url="www.baidu.com"
 files={
            'file': ('mouse.jpg',
                     open('../img/mouse.jpg', 'rb'),
                     'image/jpeg')
        }
resp = requests.request("post", url=url,  files=files)

2.方式2

构造请求头,将Content-Type 设置为 application/image/jpeg
data = MultipartEncoder(
            fields={'file': ('mouse.jpg',
                             open('../img/mouse.jpg', 'rb'),
                             'image/jpeg')}
        )
        # 构造请求头
        headers["Content-Type"] = data.content_type
        resp = requests.request("post", url=url, headers=headers, data=data)
        
 3.上传 excel 文件
 
    url = 'https://httpbin.org/post'
    
    files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
    
    r = requests.post(url, files=files)
    r.text

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值