如何在Cypress中使用cy.request发送plain/text类型POST请求
解决方案
错误根因
- 现有代码中
body参数传入的是JSON对象,Cypress会自动对对象类型的请求体做JSON序列化处理,即使手动指定了Content-Type,实际发送的请求内容依然和接口要求的纯文本格式不匹配,因此触发400错误。 - Postman中直接传入
confirmEmail=true纯文本字符串,符合接口入参要求,因此可以调用成功。
修复后代码
cy.request({ url: `${url}/user`, method: "POST", headers: { // 注意:标准纯文本Content-Type为text/plain,原写法plain/text是非标准值,部分服务端校验严格时也会触发报错,建议同步修改 'Content-Type': 'text/plain' }, // 直接传入纯文本格式的请求体,无需封装为对象 body: "confirmEmail=true" }).then(res =>{ cy.task('log',"Email id "+res.body.emailAddress); return res.body; });
补充说明:接口返回JSON格式时,Cypress会自动解析响应为JSON对象,原有
res.body的取值逻辑不需要调整,可以正常使用。
内容的提问来源于stack exchange,提问作者ArrchanaMohan
相关产品推荐
相关产品推荐

