繁体   English   中英

邮递员:通过表单数据的嵌套 JSON 的 POST 请求不起作用(而通过原始数据可以)

[英]Postman: POST request of nested JSON via form-data not working (while via raw-data ok)

我想通过 Postman 发布以下 JSON 对象:

{
    "title": "test_title",
    "date": "2021-12-31",
    "attachments": [
        {
            "name": "test_attachment"
        }
    ]
}

当使用 Postman 的原始输入表单作为请求正文时,这非常有效:我得到了“201 Created”响应。

但是,当使用表单数据 POST 数据时,我收到错误"Invalid data. Expected a dictionary, but got str." (另见下面的截图)我在这里做错了什么? 我尝试了所有其他版本来输入附件键:值对,但到目前为止没有任何效果在此处输入图像描述

我设法使它工作! (注意:与有问题的屏幕截图相比,我添加了一些额外的字段。有关详细信息,请参见下文:

在此处输入图像描述

你没有做错什么。

  • 如果您想使用 json 对象发出请求,那么您可以在 postman 中使用raw type (json)。
  • 如果要上传文件,则使用form-data
  • 还有一件事,状态 201 表示请求成功,您的对象已创建。
var express = require('express')

const multer  = require('multer')
const upload = multer()
var app = express()

app.use(express.json());

app.post('/test',upload.none(), function (req, res, next) {
 res.send(req.body)
})

app.listen(80, function () {
  console.log('web server listening on port 80')
})

上面是一个示例端点,它适用于 form-data 和 json ,只需使用表单数据和原始 json 发布到 http://localhost:80/test

你可以看到两者都会被正确解析

API只是抽象,它就像一个包含许多属性的函数,你如何解析它取决于实现(api函数是如何编写的)。

所以答案是“与开发人员交谈”,了解 API 的实现方式及其支持的内容

我在将 json 放入表单格式时遇到问题,就像 Daniel 在 Postman 中所做的那样。 需要帮助弄清楚将级联 json 对象放入表单数据格式需要什么。 请在此处查看我正在尝试完成的工作。

JSON 格式(填写到 Postman 表单数据部分:

{
  "primary_object": {
    "child_object_1": [{"id": 12345678, "value": "abc"},{"id": 87654321, "value": "xyz"}],
    "child_object_2": [
      "first_val",
      "second_val"
    ]
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM