【问题标题】:Retrieve both string and json of body using koa js使用 koa js 检索正文的字符串和 json
【发布时间】:2015-07-22 14:41:16
【问题描述】:

我使用 koa js 和 bodyparser,假设客户端发送的正文是这样的:

{ "first": "1"           , "second": "2"}

我想要的是原始正文作为没有更改的字符串(JSON.stringify 更改字段的顺序并删除空格,然后我不能使用它)。我尝试使用raw-body,它给了我正文字符串,所以我必须将它解析为 JSON。

是否有任何中间件可以将正文作为 json 和原始字符串提供给我?

【问题讨论】:

    标签: node.js middleware koa body-parser


    【解决方案1】:

    如果您想要原始字符串和 JSON,请获取字符串,保留一份副本,然后将其解析为 JSON。

    var getRawBody = require('raw-body')
    app.use(function* (next) {
      var string = yield getRawBody(this.req, {
        length: this.length,
        limit: '1mb',
        encoding: this.charset
      })
      var json = JSON.parse(string)
      // do something with "string"
      // do something with "json"
    })
    

    注意:您必须针对 this.req 运行 getRawBody(),因为那是节点的原始 http request 对象。 this.request 是 koa 特有的,不会起作用。

    【讨论】:

    • 是的,我知道这一点(写在问题中),我正在寻找一种不将字符串解析为 json 或将 json 转换为字符串的方法。感谢您的回复。
    • 您所要求的并不是一个真正的典型用例,而且内存占用量增加了一倍,而且它只需要一行额外的代码。因此,不太可能存在预打包的解决方案。手动操作(如上所示)几乎是您唯一的选择。即使有预打包的解决方案,它也会在幕后做同样的事情(将字符串解析为 JSON)。
    猜你喜欢
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多