如何处理柏树中的纯文本 POST 请求

Posted

技术标签:

【中文标题】如何处理柏树中的纯文本 POST 请求【英文标题】:How to handle the plain/text POST request in the cypress 【发布时间】:2021-12-16 17:02:26 【问题描述】:

我有一个邮递员集合,它是 POST 调用,请求正文是纯/文本类型,我只想使用 cy.request 自动执行此操作,但我不确定如何通过 cy.request 中的测试正文如果我运行以下代码,它会返回 400 错误请求。

 cy.request(
        url: `$url/user`,
        method: "POST",
   headers: 
            'Content-Type': 'plain/text'
        ,
        body: 
            "confirmEmail": "true"
        
    ).then(res =>
        cy.task('log',"Email id "+res.body.emailAddress);
        return res.body;
    );

上述请求返回 .json 响应,但输入请求如果是文本格式,在邮递员工具中同样可以正常工作。

在邮递员工具中以以下格式传递请求正文并且工作正常。

confirmEmail=true

【问题讨论】:

【参考方案1】:

我的假设是在请求正文中,我们的端点需要一个布尔值,但您传递的是一个字符串。所以将 "confirmEmail": "true" 更改为 "confirmEmail": true 应该可以工作。

cy.request(
  url: `$url/user`,
  method: 'POST',
  headers: 
    'Content-Type': 'plain/text',
  ,
  body: 
    confirmEmail: true,
  ,
).then((res) => 
  cy.log(res.body.emailAddress) //prints email address from response body
)

如果您需要在 URL 中传递参数,您可以直接使用qs

cy.request(
  url: `$url/user`,
  method: 'POST',
  qs: 
    confirmEmail: true,
  ,
  headers: 
    'Content-Type': 'plain/text',
  ,
).then((res) => 
  cy.log(res.body.emailAddress) //prints email address from response body
)

【讨论】:

不。它仍然返回 400 错误请求。我是否需要在标题部分添加任何参数来解析 cypress 中的文本请求 因此,如果您在 URL 中传递参数,则必须使用 qs。我已经更新了答案,你可以查看。

以上是关于如何处理柏树中的纯文本 POST 请求的主要内容,如果未能解决你的问题,请参考以下文章

servlet里如何处理post和get请求

使用请求模块,如何处理请求响应中的“set-cookie”?

如何处理 PHP 请求中的长标头声明?

CakePhp 1.3 如何处理作为 HTTP post 请求接收的数据?

HttpWebRequest发送post请求时有多个参数如何处理

Android 中的两个并发 AsyncTasks - 如何处理竞争条件?