羽毛允许动词配置

时间:2017-05-10 23:00:20

标签: rest feathersjs

我在使用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)但未定义)返回更合适的标题响应,当然不再继续。任何想法?,请怜悯,我只是一个有羽毛的初学者(不到一周),也许这是一个愚蠢/明显的问题。

提前致谢。

0 个答案:

没有答案