Postman预请求脚本POST创建Swagger Petstore宠物失败排查
问题原因
预请求脚本存在两个关键错误,导致POST创建宠物的逻辑无法正常执行:
- POST接口路由配置错误:Swagger Petstore 创建宠物的POST接口地址为
https://petstore.swagger.io/v2/pet,你填写的URL末尾多拼接了/202207,对应/v2/pet/{petId}的POST路由,该接口的作用是给指定ID的宠物上传图片,并非创建宠物。创建宠物时ID仅需放在请求体中传递即可,不需要追加到URL路径后。 - 请求头配置字段名拼写错误:Postman 内置
pm.sendRequest方法中,配置请求头的字段为复数形式headers,你写的是单数header,少了末尾的s,导致配置的Content-Type: application/json等请求头完全没有被携带,服务端无法正确解析JSON格式的请求体,即使路由正确也会因为请求格式不符合要求创建失败。
修正后的预请求脚本
const createPet = { url: 'https://petstore.swagger.io/v2/pet', method: 'POST', // 注意字段名为复数headers headers: { 'Content-Type': 'application/json', 'Accept': '*/*' }, body: { mode: 'raw', raw: JSON.stringify({ "name": "Volodya", "photoUrls": [ "www.parrots.org/photo1" ], "id": 202207, "category": { "id": 12675, "name": "Buzza" }, "tags": [ { "id": 5566, "name": "A Scary Mummy" } ], "status": "yes" }) } }; pm.sendRequest(createPet, function (err, res) { // 可选:控制台打印请求结果,方便调试 console.log("宠物创建请求返回状态码:", res.code); });
调试提示
排查问题时可以打开Postman控制台(顶部菜单栏View -> Show Postman Console),查看预请求发出的POST请求的实际路由、请求头、返回内容,快速确认执行状态。如果遇到偶发的预请求POST未执行完就发送DELETE请求的时序问题,可以在Postman设置中开启「Sequential sending of requests」选项,保证预请求执行完成后再发起主请求。
内容的提问来源于stack exchange,提问作者andrtvrd
相关产品推荐
相关产品推荐

