Featherjs 快速的创建一个服务端

192 阅读7分钟

Featherjs 快速的创建一个服务端

使用 phpstudy来快速的建立一个 mysql的服务器
如何使用图形化工具来管理和查看数据库
免费开源的 数据库图形化管理工具 dbeaver.io/download/

image.png

第一次运行的时候会询问你是否 简历一个 样板的数据库 选择 否

image.png

选择你要链接的数据库的类型

image.png

填写好数据库的链接信息后 点击测试链接确保链接成功

image.png

第一次测试链接的时候会提示提先安装对应的链接驱动

image.png

测试链接成功的提示界面

image.png

然后点击完成

image.png

在软件的左边视图当中就可以看到当前链接的数据库

image.png

如何新建一个数据库
在数据库的位置点击右键 选择新建数据库

image.png

一般建议按照下图来进行配置

image.png

安装构建工具
创建一个 Feather应用
前面几部一路回车 到这里了下的选择 REST和 Socket.io

image.png

测试框架这个随便填写

image.png

为了模仿真实的开发流程这里可以选择 Y这样的话接口的访问就是需要使用 token来进行校验

image.png

选择Local 账号密码的形式来进行用户鉴权

image.png

使用默认的users来管理用户模块就好

image.png

课程代码当中使用的Sequelize进行数据库操作

image.png

数据库类型是 Mysql

image.png

这一步可以直接回车 因为后期可以修改这个配置

image.png

修改配置 (第一次运行之前一定要先做这一步)
数据库链接信息的配置
config目录下修改 default.json 修改正确的mysql的链接信息 修改为你真是的mysql的链接地址

image.png

MYSQL://数据库用户名:@服务器地址:服务器端口/数据库名

image.png

如果你的数据库是有密码的还需要去设置一个 密码
在src目录下的sequelize.ts文件进行设置

image.png

image.png

设置你的用户登录的账号和密码的字段
默认 featherjs使用的是 email和 password这两个字段作为账号和密码的字段。 如果你的项目并不是的话你就需要去修改这个配置
在 src/models/users.model.js

image.png

由于我们已经修改过 users的model文件 我们改成了使用username作为账号 password作为密码
修改的位置为 config 目录下的 default.json

image.png

image.png

当完成了配置之前 就可以 在项目根目录执行

image.png

浏览器访问

image.png

运行成功!!!

添加第一个用户
第一次我们可以通过 apipost /apifox /postman等主流的api调试工作来调用一个接口来添加第一个用户

image.png

按照你的用户表的字段填写好后 点击发送

image.png

也可以去数据库管理工具当中查看是否真实添加有用户

image.png

用户登录的接口
featherjs约定了一个用户登录的接口为 post /authentication
登录传递的参数 就是在config/defautl.json当中配置的指定的用户登录的字段
还需要额外传递一个指定的 straegy的值为local的参数

image.png

登录之后会得到登录成功的用户基础信息(除了密码以外的信息) 以及 token
如何常规的web开发 我们一般需要写完调用登录接口 获取到 accessToken之后才能凭借这个token来请求其他的接口

如何使用 在 api调试工作当中使用 token
如果我们不使用token 直接调用其他接口 一般会出现下面的错误
状态码401 标识未经授权的请求(token检验失败)

image.png

第一种方式 先调用登录接口 然后手动的复制token

image.png

把token复制到 下图的位置 然后再点击发送

image.png

第二种方式 理解工具自动的token存储添加功能自动添加

第一步 在登录接口当中配置一个后置操作 在请求有了结果之后自动的提取 accessToken保存一个全局变量

image.png

第二步 在需要token的接口的位置 设置 auth的值为全局变量即可

image.png

经过以上的操作 我们就会自动的获取 CURD的全部接口
1 新增接口
请求方式: post
路径: /users
body: 用户的对应的所有字段

2 查询全部的接口
请求方式: get
路径: /users

3 查询一个的接口
请求方式: get
路径: /usres/指定的id

4 删除的接口
请求方式: delete
路径: /users/指定的id

5 修改的接口
请求方式: patch / put
路径: /users/指定的id
body:
patch的方式 可以指定某个字段的修改 (推荐)
put的方式 需要完成的配置完所有的字段

关于查询的操作

实际开发的时候我们的查询经常是需要指定条件来查询的比如指定name 指定日期范围等等
所以 feathers允许我们附带条件去查询

1 指定条件
请求的url get /users?字段名称=字段的值
这样会查询 数据库当中 指定的字段等于指定的值的数据

2 指定查询的数量
请求url get /users?$limit=查询的数量限制

3 跳过的(偏移量)的设置
请求的url get /users?$skip=偏移的数量

4 排序
请求的url get /users?sort[id]=1sort[id]=-1 sort[字段名]=1 正序/升序 (小 -> 大)
$sort[字段名]=-1 倒序/降序 (大 -> 小)

5 范围
gt大于/gt大于 / gte 大于等于
请求的url get /users?id[gt]=2查询id大于2的请求的urlget/users?id[gt]=2 查询id大于2的 请求的url get /users?id[gte]=2 查询id大于等于2的

lt小于/lt 小于 / lte 小于等于
请求的url get /users?id[lt]=2查询id小于2的请求的urlget/users?id[lt]=2 查询id小于2的 请求的url get /users?id[lte]=2 查询id小于等于2的

如果
请求的url get /users?id[gt]=2&id[lt]=5 查询id大于2的 但是小于5

6 只有查询的字段
请求的url get /users?select[]=字段1&select[]=字段2

7 模糊查询(todo 暂时不支持中文的模糊查询)
请求的url get /users?uame[like]=2请求的urlget/users?uame[like]=2% 查询uname是以2开始的 请求的url get /users?uame[like]=%2 查询uname是以2结束的

如何新建一个服务(新增一个表)
在项目根目录输入

feathers generate service
what kind of service is it 你选择什么类型的服务 选 sequelize

image.png

你的服务的名称 根据你的实际业务来说明 比如跟公司相关的 我就写了个 company

image.png

这个服务的访问路径的设置 默认就是你的服务名称

image.png

这个服务的接口是否需要鉴权访问 (请求的时候检验token) 建议选择 yes

image.png

创建完成之后再 src/model目录当中就可以看到你刚刚新创建好的服务名称的 model文件
tips: 千万不要立即运行项目!!!!

image.png

找到 sequelizeClient.define的位置 ,第二个参数就是我们对于这个服务的数据库的字段的描述。大家可以根据自己的实际业务需求来进行配置

image.png

关于字段的描述

上图当中的字段的描述还有一些参数
{
  name:{
      type:  数据类型参考 后面的链接,
      allowNull: 布尔值 是否允许为空,
      defaultValue: 默认值,
      primaryKey: 是否是组件,
      autoIncrement: 是否自增,
      unique: 是否唯一,
      comment: 备注信息,
        
  }
}

其他列的参数可以参考
www.sequelize.cn/core-concep…
常见的sequelize 字段类型

// 金融相关的价格
DataTypes.DECIMAL(10,2)   // 两位数的价格的格式

DataTypes.STRING  // varchar 普通长度的(255)的字符串
DataTYpes.TEXT('long') // LONGTEXT 对于文章 或者是 商品描述等 文本内容特别长的字符串

DataTypes.INTEGER  // 整数 但是 是一个长度为11的整数
DataTypes.BIGINT  // 比INTERGER还大的整数  如果你存储的是 时间戳 那么 必须得用到 BIGINT
DataTYpe.TINYINT // 一位数的整数  一般用在一些状态的标识

DataTypes.DATE  // 日期
DataTypes.DATETIME // 日期+时间

www.sequelize.cn/core-concep…

完成以上流程可以得到的接口有以下的范例
image.png

Navicat的使用
打开navicat 点击左上角的链接

image.png

选择MySql

image.png

添加数据库的信息 填写完后不要急着点击保存。 先点击左下角的 test connection 测试链接。

image.png

出现 connection successful 后再点击保存

image.png

进入之后就可以看到自己的刚才新建的链接了 双击链接

image.png

如果有新建的表格 你可以刷新之后才能看到自己的表

image.png

如何快速的创建自己的数据库环境
前往小皮下载一个集成
m.xp.cn/

image.png

image.png

Navicat链接成功之后 点击右键 新建一个数据库

image.png

字符集一定要按照下图来选择

image.png

此时就能看到我们新建的数据库了

image.png