在 Fastify addContentTypeParser 中使用默认 JSON 解析器
Use default JSON parser in Fastify addContentTypeParser
美好的一天,
请帮助实现 fastify 默认解析器。
我需要的是在每个请求上分配 JSON-body 解析器,而不考虑 content-type
header
目前,我已经用那个丑陋的解决方法完成了它:
const {kContentTypeParser} = require("fastify/lib/symbols")
const asJson = fastify[kContentTypeParser].customParsers["application/json"]
fastify.addContentTypeParser("*", asJson);
提前致谢
在 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()
})
美好的一天,
请帮助实现 fastify 默认解析器。
我需要的是在每个请求上分配 JSON-body 解析器,而不考虑 content-type
header
目前,我已经用那个丑陋的解决方法完成了它:
const {kContentTypeParser} = require("fastify/lib/symbols")
const asJson = fastify[kContentTypeParser].customParsers["application/json"]
fastify.addContentTypeParser("*", asJson);
提前致谢
在 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()
})