万字前端效率大提速系列 ? :七、前端需要了解的后端常用工具

上一篇简单介绍了怎么编写一个接口,在编写接口的时候,我们会用到关系型数据库例如 MySQL;数据库可视化管理工具例如 Sequel Ace;Key-Value数据库例如 Redis;接口调试工具例如 Postman;这里介绍一下他们的功能和简单使用方式:

MySQL

MySQL 是 Web 应用中最流行最好用的关系型数据库之一,数据库用于存储、管理数据,而关系型数据库有以下几个主要特点:

  1. 以表(table)的形式存储数据,表有固定的数据格式,使用 DDL 语句修改表结构。
  2. 采用结构化查询语言(SQL)做数据读写
  3. 通过事务(Transaction)保持数据的一致性

在业务中我们可以用 MySQL 存储用户信息、商品信息、订单信息等等。在用户操作时使用事务保证数据一致性,例如下单时锁定库存和优惠券,提现时锁定余额。在开始之前先了解几个重要术语:

  1. 数据库(database),数据库是多个数据表(table)的集合,即 数据库可以包含多个数据表,一个数据表包含多行相同结构的数据
  2. 数据表(table),数据表可以有多列和多行,看起来类似 excel 表格,一行即一条数据,一列则是相同类型的数据
  3. 列(column),一个数据表有多个列,创建时需要给列定义数据类型,数据类型共有以下几种:整型、浮点型、字符串、时间和日期、BLOB 和 TEXT、枚举类型
  4. 主键(primary key),一个表中只能包含一个主键,主键可以用来查询数据

安装

这里演示 MacOS 下使用 Homebrew 安装 MySQL@5.7,终端输入命令:

brew install mysql@5.7
复制代码

安装成功后控制台会输出使用方法:

If you need to have mysql@5.7 first in your PATH, run:
    # 执行这一行 然后执行 source ~/.zshrc,就可以在控制台调用 mysql 指令
    echo 'export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"' >> ~/.zshrc
To connect run:
    # 执行这一行 进入 mysql 控制台
    mysql -uroot
复制代码

此时会进入 mysql 控制台:

# 查看所有数据库
mysql> show databases;

# +--------------------+
# | Database           |
# +--------------------+
# | information_schema |
# | localDatabase      |
# | mysql              |
# | performance_schema |
# | sys                |
# +--------------------+

# 创建名为 test_database 的数据库
mysql> create database test_database;

# 选择数据库 test_database
use test_database;
复制代码

此时我们创建并选择了 test_database 数据库,可以在库里创建数据表了

创建表

CREATE TABLE `test_user_tbl` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL DEFAULT '' COMMENT '用户名',
  `pwd` varchar(20) NOT NULL DEFAULT '' COMMENT '密码',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
复制代码

这条语句创建了数据表 test_user_tbl 并定义了表中三个列的数据结构:

  • 主键id,插入数据时会自增
  • 字段 username,长度为 20 的字符串(varchar),不能为 null(NOT NULL) 默认空字符串(DEFAULT ”),备注用户名(COMMENT ‘用户名’)
  • 字段 pwd

增删改查

-- 插入一条 `username 用户名 pwd 密码` 数据
mysql> INSERT INTO test_user_tbl 
    -> (username, pwd)
    -> VALUES
    -> ("用户名", "密码");

-- 将 id=1 的 username 改为 '更新后的用户名'
mysql> UPDATE test_user_tbl SET username='更新后的用户名' WHERE id=1;

-- 查询 id=1 的数据
mysql> SELECT * from test_user_tbl WHERE id=1;

-- 删除 id=1 的数据
mysql> DELETE FROM test_user_tbl WHERE id=1;
复制代码

以上是一些基础操作,在 mysql控制台还可以执行其他多种多样符合 sql 语法的语句。通常我们会在后端应用里使用工具库连接并操作 MySQL:

NodeJS 中使用 Sequelize 连接 MySQL 数据库

const Sequelize = require("sequelize");
const sequelize = new Sequelize("test_user_tbl", "root", "", {
  host: "localhost",
  dialect: "mysql",
  pool: {
    max: 5,
    min: 0,
    idle: 10000,
  },
});
复制代码

项目实践注意事项

  1. 考虑用字符集 CHARSET=utf8mb4 代替 utf8,前者兼容更多的生僻字、emoji表情等
  2. 注意使用事务保证数据一致性,不同的需求使用不同的隔离级别
  3. 密码、手机号等敏感信息,建议加密后存储在数据库,即脱敏处理,避免信息泄露
  4. 负载压力大考虑分布式数据库,设置备份规则保证数据安全

学习资源

菜鸟入门教程
Mysql 应用指南
[官方文档]](docs.oracle.com/en-us/iaas/…)

Sequel Ace

使用控制台操作 MySQL 不直观也不方便,既然说数据表像一个表格,我们需要可视化工具真的看到一个表格。MacOS 推荐免费工具 Sequel Ace

  • 建立连接:打开软件,通过设置 host、username、password 即可建立连接,(database可选 port默认3306)

  • 顶部按钮:选择/创建数据库

  • 点击左下角 + 号,创建数据表,输入表名后在右方添加编辑列信息。

  • 点击左侧列表选择查看其他数据表,点击右上方选项卡查看表结构、内容、关系、表信息等等。

  • 主要是在内容中可以方便的查看表中的数据,也可以双击编辑数据(常用于开发环境)

Redis

Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。

键的类型只能为字符串,值支持的五种类型数据类型为:字符串、列表、集合、有序集合、散列表。

Redis 具有以下主要优势:

  • 读写性能极高
  • 丰富的数据类型 – 支持字符串、列表、集合、有序集合、散列表
  • 原子性 – 要么完全执行成功,要么失败完全不执行
  • 可持久化、可分布式、可数据备份

Redis 使用起来就像是JS中的 Map 数据结构(但 key 只能是字符串,value要符合支持的数据结构)。在业务中,我们可以用 Redis 来存储用户的鉴权 token,用户带着 token 访问时,可以快速从 redis 取出并对比。还可以用有序集合、列表做排行榜等等

安装

官网安装教程

# 启动 redis,或者 brew services start redis
redis-server

# 进入 redis 控制台
redis-cli
复制代码

控制台基础使用

# 设置 key 为 usertoken,value 为 my-token 的一条数据
127.0.0.1:6379> SET usertoken my-token

# 获取 key 为 usertoken 的 value(用于字符串值)
127.0.0.1:6379> GET usertoken
# 输出 "my-token"

# 查询 key 为 usertoken 是否存在 
127.0.0.1:6379> EXISTS usertoken

# 删除 key 为 usertoken 的记录 
127.0.0.1:6379> DEL usertoken
复制代码

在 NodeJS 中连接并使用

主要借助于官方库node-redis

import { createClient } from 'redis';

(async () => {
  // 配置 redis 连接信息
  const client = createClient({
    url: 'redis://127.0.0.1:6379'
  });

  // 监听 redis 错误
  client.on('error', (err) => console.log('Redis Client Error', err));

  // 连接 redis
  await client.connect();

  // 设置 key
  await client.set('key', 'value');
  // 获取 key 对应的 value
  const value = await client.get('key');
})();
复制代码

Postman

写好接口后,我们可以用 Postman 模拟请求,调试接口。使用方法就是可视化的方式配置发起请求,配置和前端 $.ajax、axios 等请求库一样:

  1. 先选择请求方法,一共有15个请求方法,最常用的是 GET 和 POST。
  2. 按界面上的输入框,配置请求的 URL、请求参数(有 query string 和 request body)、请求头。注意,用户信息需要配置 cookie 或者请求头的 token 来携带。
  3. 点击 send 发起请求,查看请求结果。

通过测试的接口,就可以按请求方式,写成接口文档供客户端调用啦。

上一篇:六、前端需要了解的后端知识、计算机网络知识及衍生面试题

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享