我在使用feathersjs(v2.0)时非常新,只做了一个小型的REST应用程序,只能使用羽毛找到少量记录。但是,我不知道,我还没有找到方法,阅读文档和示例,只允许FIND没有获取,放置,删除等。有没有办法配置允许哪些动词羽毛REST API?我试图在前钩子(在服务挂钩中)添加一个拒绝功能,只有一个返回,但返回500错误,响应是:
{" name":" GeneralError"," message":"无法读取属性' bind'的 未定义""代码" 500"的className":"通用错误""数据":{},&# 34;错误":{}}
其他动词的默认值(在钩子文件中没有任何功能)是:
" name":" NotFound"," message":"找不到id的记录 '空'""代码":404,"的className":"未找到""错误&# 34;:{}}
这是有道理的,但我个人的感觉是,如果你不需要那些动词,为什么我需要允许它们并返回这个"误导"错误?
更新
我做了这个伎俩,但我并不满意,因为回复标题与实际发生的情况不符。
为了获取标题信息,我必须在服务文件中添加此代码
// This must be before the service creation
app.use(function(req, res, next) {
req.feathers.headers = req.headers;
next();
});
app.use('/myservice', createService(options));
根据给出的答案here。但是,函数在服务创建参数上的daffl给出的答案对使用feathers-cli生成的代码不起作用,所以它必须在之前(更好的方法?,如何在createService函数中设置为第二个或第一个参数) ?或者在options对象里面,是否可能?我只是得到编译错误)。我必须使用钩子函数定义一个新文件并将其包含在" myservice.hooks.js"
module.exports = function () {
return function (hook) {
if(hook.method !== 'find' && hook.method !== 'error'){
throw new Error('Method not allowed');
}else{
return hook;
}
};
};
这当然会产生500错误,但是如果“GET'”上的“允许”标题应该是405错误。我也尝试使用此代码而不是抛出错误:
hook.params.headers.allow = 'GET';
hook.params.headers.status = 405;
它工作得更好,但在删除时,例如它会尝试删除数据库中的记录(幸运的是数据库用户只有选择权限),但这不应该在POST和PUT类似的行为中走得那么远。只有响应标题状态不是200 OK而是400(?!!)并且允许标题没有改变,所以它是" GET,POST,PUT,PATCH,DELETE"。
我看了this solution,但我不知道如何设置标题'正确使用羽毛的价值' hook.params.headers(或hook.header(s)但未定义)返回更合适的标题响应,当然不再继续。任何想法?,请怜悯,我只是一个有羽毛的初学者(不到一周),也许这是一个愚蠢/明显的问题。
提前致谢。