Node.js 如何在路由处理程序中接受纯文本
我正在使用将文件上载到hapi.js17.9api。FilePond允许用户选择文件后自动上载,并具有用于删除/还原/撤消上载文件的UI。根据FilePond的文档 FilePond通过点击“撤消”按钮发送以12345为主体的删除请求 其中12345是上载文件时服务器提供的ID。请注意,这不是JSON,而是纯文本正文 我有一个hapi.js路由,它被设置为处理DELETE方法,带有默认的验证设置。当FilePond发送其请求时,Hapi会在执行我的处理程序代码之前以400错误响应,并在控制台中打印此消息:Node.js 如何在路由处理程序中接受纯文本,node.js,reactjs,hapijs,filepond,Node.js,Reactjs,Hapijs,Filepond,我正在使用将文件上载到hapi.js17.9api。FilePond允许用户选择文件后自动上载,并具有用于删除/还原/撤消上载文件的UI。根据FilePond的文档 FilePond通过点击“撤消”按钮发送以12345为主体的删除请求 其中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文档强烈暗示了不做任何有效负载验证,所以我有点惊讶于这种情况甚至是一个问题
我尝试了以下方法:
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=未定义
options.validate=null
编辑:
根据我团队中一位成员的建议,我也尝试了
options.validate:{payload:(()=>{return Joi.string();})(}}
定义我的路由选项时根本没有validate属性(这在功能上应该等同于显式的未定义属性,但谁知道呢)
在所有这些情况下,我仍然会得到上面的验证错误。难道不可能编写一个接受纯文本、非json文本的hapi路由吗 我不确定。我所知道的是,具有主体的删除请求不是到处都可以接受的,因此您可以尝试更改remove调用的http方法类型,看看这是否会产生影响。我不确定。我所知道的是,具有主体的删除请求并不是到处都可以接受的,因此您可以尝试更改remove调用的http方法类型,看看这是否会产生影响。