使用params传递参数主要是用于get请求,传递的参数会自动拼接到链接中。
data = {
'btypeId': 15
}
res = requests.get(url=self.url+'/ifspbusiness/generateBusinessId', params=data, headers=self.headers)
data传参主要是用于post请求,参数form表单,本质来说就是一个字典
body = {
'files': {
'file': ('', open(self.file['file1']['file_name']), self.file['file1']['file_name'].rsplit('.', 1)[-1]),
},
'businessId': bss_id,
'fileType': '1'
}
res = requests.post(self.url+'/ifspbusiness/ossUpload', data=body, headers=self.oss_headers)
若我们通过代码对接口上传附件,一半是form参数
其中file是表单标签的name
构造文件参数files,其是一个字典:
'files': { 'file': ('', open(self.file['file1']['file_name']), self.file['file1']['file_name'].rsplit('.', 1)[-1]), }
file对应的value值是一个元组,第一个参数是附件名称,第二个参数是二进制的文件,第三个变量是文件的格式
上传文件时,通常headers中有一个字段是“Content-Length”,等于上传文件的长度,不能大于也不能小于。大于文件实际长度,服务端/客户端读取到消息结尾后,会等待下一个字节,自然会无响应直到超时;如果小于实际长度,只会上传等于Content-Length大小的文件长度,丢失文件内容;如果不能确认文件大小,可以设置
"Transfer-Encoding": "chunked"
该字段表示分块传输数据,设置这个字段会自动产生两个效果:
json是一种比较常见的数据格式,是post请求时使用
url = queryJolyne + "/xyqb"
headers = {"Content-Type": "application/json"}
body = {"sql": [
"select u.uuid,l.id from user u inner join loan l on u.id=l.`user_id` where u.`phone_no`=%s order by l.id desc limit 1;" % phoneNo ]}
res = requests.post(url=url,headers=headers,json=body)
rs = res.json()["data"]
# rs是个列表,将列表转换成字符串的办法
rs_str = " ".join(str(i) for i in rs)
rs_str = rs_str.split(",")