"msg": "invalid character '+' lo
2020-03-30 本文已影响0人
lalalasa
近期在使用Postman接口的遇到标题中的报错:
"msg": "invalid character '+' looking for beginning of value"
发现一个小细节,把过程记录在这
实际的接口请求:
{
"base_info":{"type":1},
"contact_info":
{"phone":"+886-22203678",
"email":"demo@demo.com"
},
"media_info":
{"media_type":1}
}
根据实际的接口参数,在Postman中添加body
body:
{
"base_info":{"type":1},
"contact_info":
{"phone":{{phone}},
"email":{{email}}
},
"media_info":
{"media_type":1}
}
在pre-request script中创建phone和email变量
pre-request script:
var id_begins_with = 1424000000
var id = Math.floor(Math.random() * 999999) ;
var mix_id = id_begins_with + id
str = mix_id.toString()
// str = '' + mix_id
console.log(str)
var phone = "+886-" + str
var email = str + "@auto.com"
console.log(phone)
console.log(email)
pm.environment.set("id", mix_id);
pm.environment.set("phone", phone);
pm.environment.set("email", email);
发送请求,response body返回报错
response body:
{
"code": 2,
"msg": "invalid character '+' looking for beginning of value",
"data": null
}
在pre-request script中查看phone和email的字符类型:
console.log(typeof phone)
console.log(typeof email)
console中打印出来的phone和email都是符合要求的,字符类型也都为string,不知道为什么传到body后就报错,折腾了很久,才在看request body的时候发现,真实的接口中phone和email都是带引号的,而以上脚本处理后传到body中,两个变量的值都没有引号,解决方法是:在body中给email和phone都加上引号
{
"base_info":{"type":1},
"contact_info":
{"phone":"{{phone}}",
"email":"{{email}}"
},
"media_info":
{"media_type":1}
}
很神奇的postman,变量可以直接用引号