python 接口传递参数params | data | json

params

使用params传递参数主要是用于get请求,传递的参数会自动拼接到链接中。

data = {
            'btypeId': 15
        }
res = requests.get(url=self.url+'/ifspbusiness/generateBusinessId', params=data, headers=self.headers)

data

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"

该字段表示分块传输数据,设置这个字段会自动产生两个效果:

  • Content-Length 字段会被忽略
  • 基于长连接持续推送动态内容

json

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(",")

你可能感兴趣的:(python,python)