1

再会,

请帮助实现fastify默认解析器。

我需要的是在每个请求上分配 JSON-body 解析器,而不管content-type标头

目前,我已经用那个丑陋的解决方法做到了:

const {kContentTypeParser} = require("fastify/lib/symbols")
const asJson = fastify[kContentTypeParser].customParsers["application/json"]
fastify.addContentTypeParser("*", asJson);

先感谢您

4

1 回答 1

1

在 fastify <=v2.11 中,默认的内容类型解析器没有公开。

由于它应用了许多检查(如原型中毒、内容长度等),因此在覆盖之前应该小心。

您的目标可以存档添加一个钩子:

fastify.addHook('onRequest', (request, reply, done) => {
  const type = request.getHeader('content-type')
  if(!type || type.indexOf('json') < 0){
    // force json body parse
    request.headers['content-type'] = 'application/json'
  }
  done()
})
于 2019-12-31T13:21:00.940 回答