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

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错误响应,并在控制台中打

我正在使用将文件上载到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方法类型,看看这是否会产生影响。