如何在路由处理程序中接受纯文本

时间:2019-07-11 21:55:52

标签: node.js reactjs hapijs filepond

我正在使用FilePond将文件上传到hapi.js 17.9 API。 FilePond允许用户选择文件后自动上传,并具有用于删除/还原/撤消上载文件的UI。根据FilePond的文档...

FilePond通过点击“撤消”按钮,以12345作为正文发送DELETE请求

其中 12345 是文件上传时服务器提供的ID。请注意,这不是JSON,而是纯文本主体。

我有一个hapi.js路由,它设置为使用默认验证设置来处理DELETE方法。当FilePond发送请求时,Hapi在执行我的处理程序代码之前会响应400错误,并在控制台中显示以下消息:

Validation-failAction:error ValidationError: "value" must be an object
    at Object.exports.process (/home/lamont/projects/rooster/api/node_modules/hapi/node_modules/joi/lib/errors.js:203:19)
    at internals.Object._validateWithOptions (/home/lamont/projects/rooster/api/node_modules/hapi/node_modules/joi/lib/types/any/index.js:764:31)
    at module.exports.internals.Any.root.validate (/home/lamont/projects/rooster/api/node_modules/hapi/node_modules/joi/lib/index.js:147:23)
    at Object.internals.input (/home/lamont/projects/rooster/api/node_modules/hapi/lib/validation.js:83:63)
    at exports.payload (/home/lamont/projects/rooster/api/node_modules/hapi/lib/validation.js:50:22)
    at Request._lifecycle (/home/lamont/projects/rooster/api/node_modules/hapi/lib/request.js:263:62)
    at process._tickCallback (internal/process/next_tick.js:68:7)

hapi文档强烈暗示default payload validation options不执行任何有效负载验证,因此令我感到惊讶的是,这种情况甚至是一个问题。

我尝试了以下操作:

options.payload= {parse: false}

options.payload= {allow: "text\*"}

options.validate= { payload: async (v, o) => { return v } }

options.validate= { payload: true }

options.validate= { payload: false }

options.validate= undefined

options.validate= null

编辑: 根据我团队中一位成员的建议,我也尝试过

options.validate : { payload: (() => { return Joi.string(); })() }

并定义我的路线选项,而该路线选项根本没有validate属性(在功能上应该等效于显式的undefined但谁知道)。

在所有这些情况下,我仍然收到上述验证错误。难道不可能写一个接受纯非json文本的hapi路由吗?

0 个答案:

没有答案