我们如何在 OpenTest 中进行使用 formdata 而不是 json 的 POST 服务调用?

Posted

技术标签:

【中文标题】我们如何在 OpenTest 中进行使用 formdata 而不是 json 的 POST 服务调用?【英文标题】:How can we make a POST service call which takes formdata instead of json in OpenTest? 【发布时间】:2020-11-17 15:22:46 【问题描述】:

我们有一个 WebService,它将 formData 键值对作为请求而不是 json。使用openTest 我们如何通过这些formData?基本上我们需要一个代码 sn-p 来使用OpenTest yaml 脚本发布formData

以下是我们需要使用 OpenTest 发布的示例 curl 命令,其中 Content-Type 为 multipart/form-data

`
curl --location --request POST 'https://serviceurl.com/getacb' \
--form 'userKey=a1b23' \
--form 'apiKey=1_ffER_hk6Rb89--2EElfsdeF3' \
--form 'secret=Ude+6NIjojo89/gyAB7huGS5' \
--form 'targetUID=ulknnk4kjlkj5'
`

我们正在寻找一个示例 sn-p 来发布上述 multipart/form-data。

【问题讨论】:

【参考方案1】:

在将 FormData() 对象传递给下一个操作之前,您需要自己构建它。

var data = new FormData();
data.append("userKey", "a1b23");
data.append("apiKey", "1_ffER_hk6Rb89--2EElfsdeF3");
data.append("secret", "Ude+6NIjojo89/gyAB7huGS5");
data.append("targetUID", "ulknnk4kjlkj5");

这是对OpenTest API testing YAML 进行了一些修改的示例。

description: Example Post based off SO Question
actors:
  - actor: ACTOR1
    segments:
      - segment: 1
        actions:
          - description: Create a random post ID
            script: | 
              var data = new FormData();
              data.append("userKey", "a1b23");
              data.append("apiKey", "1_ffER_hk6Rb89--2EElfsdeF3");
              data.append("secret", "Ude+6NIjojo89/gyAB7huGS5");
              data.append("targetUID", "ulknnk4kjlkj5");

          - description: Send a request to getacb
            action: org.getopentest.actions.HttpRequest
            args:
              url: https://serviceurl.com/getacb
              headers:
                Content-Type: multipart/form-data
              verb: POST
              body: data

          - description: Extract the response's status code and body
            script: |
              var statusCode = $output.statusCode;
              var postInfo = $output.body;

          - description: Validate the response status code
            script: |
              if (statusCode != 201) 
                $fail($format(
                  "We expected the status code to be 0 but it was 1",
                  201,
                  statusCode));
              

【讨论】:

以上是关于我们如何在 OpenTest 中进行使用 formdata 而不是 json 的 POST 服务调用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 aspnet 身份中进行会话管理?

如何在 django 中进行管理操作以下载用户的 pdf 文件

如何在 laravel 中进行会话?

如何在 HTML 属性中进行评论?

通过将数据存储在会话存储中进行会话管理

如何在允许格式化的 JavaScript 编辑器中进行清理