Feathers 入门

2,563 阅读4分钟

1. Feathers 介绍

feathers: 基于express的web应用程序框架。其提供了一系列的工具方法来快速创建可拓展的 REST APIs 和实时的应用程序。官方文档介绍其引入了比传统MVC体系结构更容易理解,维护和扩展的应用程序体系结构。 feathers主要方法介绍

  • services

    services 是feathers应用程序的核心同时也肩负着处理数据访问的责任。服务的方法主要是:

    1. find - 查找所有数据(可能与查询匹配)
    2. get - 通过其唯一标识符获取单个数据条目
    3. create - 创建新的数据
    4. update - 通过完全替换它来更新现有数据条目
    5. patch - 通过合并新数据来更新一个或多个数据条目
    6. remove - 删除一个或多个现有数据条目

    services 的主要作用嗯核心作用就是对数据的处理包括简单的增删改查,当然如果我们想要对这些进行api接口进行完善(比如添加登录验证呀)的时候就要用到另一个知识点啦

  • hooks

    hooks 钩子,hooks 是可插入的中间件功能可以在服务方法发生反馈之前或者之后进行注册。 一个简单的栗子:

    app.service('messages').hooks({
      before: {
        create: async context => {
          context.data.createdAt = new Date();
    
          return context;
        }
      }
    })
    

    嗯我基本上主要的就是通过这些来学习feathers的当然更具体的描述我们可以去官方文档进行查看

2. 安装与使用

配置环境需要Node 6.0版本以上

当然我们可以通过feathers生成器快速创建应用 安装 feathers 生成器

npm install @feathersjs/cli -g

生成应用程序

feathers generate app

这里需要输入创建应用的简单描述,具体的描述解释可以查看官方文档 这里当所有的准备工作做完以后一个基础的应用框架就已经搭建完毕啦,接下来我们就可以直接使用了

npm start

打开localhost:3030我们就能看到创建的应用程序的欢迎界面啦。

3. 创建新的services

一个新的services也就以为着在express中的新的数据模型,比如用户表这样 通过生成器我们可以快速的进行创建:

feathers generate service

创建完新的服务以后我们能在文件目录下看到models下新增了刚刚创建的数据模型表,我们只需要将表字段进行修改新的数据表就完成了。

当然services文件夹下也会同时创建两个js文件,一个是hooks钩子的注册文件,另一个是service服务文件。

在hooks注册文件里我们就能编写所需要的代码了。比如:登录验证

这里的登录验证只是hooks里使用的,在访问之前对所有的接口进行判断如果token判断失败就会报错。

const { authenticate } = require('@feathersjs/authentication').hooks;
module.exports = {
  before: {
    all: [ authenticate('jwt') ],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
  },

  after: {
    all: [
        content => {
            
        }
    ],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
  },

  error: {
    all: [],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
  }
};

4. 登录验证

登录验证 我们也可以直接通过脚手架来生成:

feathers generate authentication

这样我们经过简单的输入后就能生成登录验证的接口信息了。

登录验证的话默认的是email + password 进行的登录,如果需要修改的话我们需要去到 config 下的 default.json 文件下进行修改

"local": {
      "entity": "users", 
      "usernameField": "phone", // 这里修改成个人的表字段就好了
      "passwordField": "password"
}

在验证的接口中我们会发现只返回单单的 token 信息,如果我们想要返回相应的用户信息的话可以这样:

app.service('authentication').hooks({
    before: {
      create: [
        authentication.hooks.authenticate(config.strategies)
      ],
      remove: [
        authentication.hooks.authenticate('jwt')
      ]
    },
    after: {
        all: [ 
            hook => { // 在这里改写信息
                hook.result.user = hook.params.user; // 这里将获取到的 user 信息返回给前端。
                // 需要更改字段名的话只需要修改result后的字段就可以里
                return hook;
            }
        ]
    },
  });

小结

说的有些乱,嗯简单的创建应用程序基本上就完成了,实际上官方文档解释的很清晰建议能好好看下官方文档会有更好的理解。

参考文档

Featherjs