首页 > 解决方案 > 赛普拉斯登录 REST 端点未经授权,邮递员工作 - 上传 JSON 文件

问题描述

我们有一个带有接收数据的传入 REST 端点的 REST 服务。它没有 Web 界面(Swagger 左右),只有 API。使用 Postman,我可以向其 POST 一个 JSON 文件(响应代码为 202),然后从另一个端点读取上传的数据。

当我想使用赛普拉斯登录到同一个端点以从夹具文件夹上传 JSON 文件(与 Postman 请求中的正文相同)时,我得到响应代码 401——未经授权。我感觉 cypress 请求是错误的,因为当我使用 cypress POST 时服务的日志文件没有写消息,但是当我使用 Postman POST 时它会写消息。

第一个问题:我在柏树请求中做错了什么?

第二个问题:身份验证成功后,如何将 JSON 文件的内容发布/上传/推送到该端点?因为我没有网页可以交互,所以我不能使用点击按钮功能。该文档主要处理解释 JSON 响应而不是发送它。

我的柏树代码:

it('logs in to connector through REST API', () => {

  cy.request({
    method: 'POST',
    url: 'localhost:8095/connector/demands/v1/demandData',
    failOnStatusCode:false,
    form: true,
    body: {
        Username: 'user',
        Password: 'pass',
    }
  })
})

import my-request from '../fixtures/my-request.json'
it('loads the JSON file', () => {
        cy.fixture('my-request.json')

})

要上传的 JSON 文件的结构并不太简单,这里有一个简化的版本:

{
"@metadata": {
    "context": "{{A}}"
},
"pool": "{{B}}",
"action": "NEW",
"Type": "ANNOUNCEMENT",
"ON": "Order123",
"PON": "PO123",
"SNN": "SN123",
"direction": "OUT",
"mode": 3,
"pack": [
    {
        "out": {
            "outKey": "OUT14",
            "outQuantity": "3",
            "dimension": {
                "length": "303",
                "width": "33",
                "height": "903",
                "unit": "mm"
            },
            "layers": "3",
            "weight": "3000",
            "weightUnit": "grm",
            "in": [
                {
                    "inKey": "IN12",
                    "inQuantity": "3",
                    "article": {
                        "articleKey": "article3",
                        "quantity": "300",
                        "PON": "Art_PO300",
                        "SNN": "Art_SN300"
                    }
                }
            ]
        },
        "p1": "pack3",
        "p2": "pack4",
        "store": true
    },
    {
        "out": {
            "outKey": "OUT23",
            "outQuantity": "5",
            "dimension": {
                "length": "505",
                "width": "55",
                "height": "905",
                "unit": "mm"
            },
            "layers": "5",
            "weight": "5000",
            "weightUnit": "grm",
            "in": [
                {
                    "inKey": "IN19",
                    "inQuantity": "5",
                    "article": {
                        "articleKey": "article5",
                        "quantity": "500",
                        "PON": "Art_PO500",
                        "SNN": "Art_SN500"
                    }
                }
            ]
        },
        "p1": "pack5",
        "p2": "pack5",
        "store": true
    }
]

}

标签: jsonrestpostfile-uploadcypress

解决方案


找到解决方案。不能给出“form: true”,因为这会覆盖内容类型。


推荐阅读