pythonpostapi_python简单进行post接口测试,接口参考Swagger

Swagger上面找一个post接口,如图。同样可以先在swagger上面try it out先验证下本接口效果

经试验,参数如下,加上正确的token,可以正确查询到结果:

{

"id": 283,

"name": "",

"orderBy": 2,

"pageNo": 1,

"pageSize": 20,

"queryTotal": true,

"sortString": "id"

}

接下来,我们通过python来验证下该接口:

一开始是这样写的:

import requests

if __name__ == '__main__':

url = 'http://XXX.XX/api/item/v1/attribute/search'

attributeNamePageSearchModel = {

"id": 283,

"name": "",

"orderBy": 2,

"pageNo": 1,

"pageSize": 20,

"queryTotal": true,

"sortString": "id"

}

header={"Authorization": "f0fe02af-dca6-47e7-8f09-07c53d2bfc61"}

response=requests.post(url,data =attributeNamePageSearchModel,headers=header)

print(attributeNamePageSearchModel)

print(response.url)

print(response.text)

发现"queryTotal": true, 这一行的true有红色报错;尝试改成'true'和1,运行结果依然不对;在Swagger上面也改成'true'和1,相同报错;后经过搜索,知道python里面需要改成True才行!

改成True之后运行,不是应该有的结果:

那一定是我们参数不对,接着探索,发现需要加上Content-Type;于是修改header一行:

header={"Authorization": "f0fe02af-dca6-47e7-8f09-07c53d2bfc61","Content-Type":"application/json"}

再运行,发现还是上述无效请求。。em,继续看,是不是json格式的问题,于是试着转化下,header上面加一行,同时上面还需要import json:

#python数据类型转换为json类型(json.dumps())

attributeNamePageSearchModel = json.dumps(attributeNamePageSearchModel)

再运行,ok,是想要的结果:

备注:上述有2条语句其实有2种写法,1或2都可以:

1.

attributeNamePageSearchModel = json.dumps(attributeNamePageSearchModel)

response=requests.post(url,data =attributeNamePageSearchModel,headers=header)

或者2.

response = requests.post(url, json=attributeNamePageSearchModel, headers=header)

总结:

1.json编码的格式几乎和python语法一致,略有不同的是:True会被映射为true,False会被映射为false,None会被映射为null,元组()会被映射为列表[];

所以想要在post请求中使用data关键字来传递json格式的字符串,首先得把dict转为string(用到json.dumps());

或者也可以直接使用json关键字直接传递,在传递时会自行进行编码为string类型(不需要json.dumps())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值