[ad_1]
在前面的第 1 部分中,您看到了如何使用以下方法快速创建一个简单的 API 服务 Fedora 工作站、Express 和 JavaScript。 本文向您展示了如何创建新 API 的简单性。 这部分向您展示如何:
- 安装数据库服务器
- 建立新路线
- 连接一个新的数据源
- 用 Fedora 发送和接收数据的终端
生成应用程序
请参阅上一篇文章了解更多详情。 但为了简单起见,请切换到您的工作目录并生成一个应用程序框架。
$ cd our-work-directory
$ npx express-generator –no-view –git /myApp
$ cd myApp
$ npm i
安装数据库服务器
在这一部分,我们将安装 MariaDB 数据库。 MariaDB 是 Fedora 默认数据库。
$ dnf module list mariadb | sort -u ## lists the streams available $ sudo dnf module install mariadb:10.3 ##10.4 is the latest
注意:默认配置文件是 mariadb/server。
对于那些需要启动 Docker 容器的人来说,这是一个现成的容器 Fedora 31 可用。
$ docker pull registry.fedoraproject.org/f31/mariadb
$ docker run -d --name mariadb_database -e MYSQL_USER=user -e MYSQL_PASSWORD=pass -e MYSQL_DATABASE=db -p 3306:3306 registry.fedoraproject.org/f31/mariadb
现在启动 MariaDB 服务。
$ sudo systemctl start mariadb
如果您希望该服务在启动时启动,您还可以在 systemd 中启用它:
$ sudo systemctl enable mariadb ## start at boot
接下来,根据需要设置数据库:
$ mysql -u root -p ## root password is blank MariaDB> CREATE DATABASE users; MariaDB> create user dbuser identified by ‘123456‘; MariaDB> grant select, insert, update, create, drop on users.* to dbuser; MariaDB> show grants for dbuser; MariaDB> q
需要一个数据库连接器才能将数据库与 Node.js 一起使用。
$ npm install mariadb ## installs MariaDB Node.js connector
我们将在此示例 API 中利用 Sequelize。 Sequelize 是一个基于 Promise 的 Node.js ORM(对象关系映射器),适用于 Postgres、MySQL、MariaDB、SQLite 和 Microsoft SQL Server。
$ npm install sequelize ## installs Sequelize
连接新的数据源
现在,创建一个新的 db 文件夹并在那里创建一个新文件 sequelize.js:
const Sequelize = require('sequelize'), sequelize = new Sequelize(process.env.db_name || 'users', process.env.db_user || 'dbuser', process.env.db_pass || '123456', { host: 'localhost', dialect: 'mariadb', ssl: true }) module.exports = sequelize
注意:为了完整起见,我包含了一个指向相关 Github 存储库的链接: https://github.com/vaclav18/express-api-mariadb
让我们创建一个新文件models/user.js。 Sequelize 模型的一个很好的特性是它可以帮助我们自动创建必要的表和列。 负责执行此操作的代码片段如下所示:
sequelize.sync({ force: false })
注意:永远不要使用生产数据库切换到 true – 它会在应用程序启动时删除您的表!
我们将这样引用之前创建的 sequelize.js:
const sequelize = require('../db/sequelize')
建设新路线
接下来,您将创建一个新文件 routes/user.js。 您已经有了上一篇文章中的 routes/users.js。 您可以复制并粘贴代码并继续编辑它。
您还需要对先前创建的模型的引用。
const User = require('../models/user')
将路由路径更改为 /users 并创建一个新的 邮政 方法路线。
注意异步 – 在那里等待关键字。 与数据库的交互需要一些时间,而这个可以解决问题。 是的,异步函数返回一个 promise,这个函数使 promise 易于使用。
注意:此代码尚未准备好用于生产,因为它还需要包含身份验证功能。
我们将使新路线以这种方式工作:
const userRouter = require('./routes/user') app.use(userRouter)
让我们也删除现有的 usersRouter。 route/users.js 也可以删除。
$ npm start
使用上述命令,您可以启动您的新应用程序。
使用终端发送和检索数据
让我们通过 post 方法创建一个新的数据库记录:
$ curl -d 'name=Adam' https://localhost:3000/users
要检索通过 API 创建的数据,请执行 HTTP GET 请求:
$ curl https://localhost:3000/users
的控制台输出 curl command 是一个 JSON 数组,包含用户表中所有记录的数据。
注意:这并不是通常的最终结果——应用程序最终会使用 API。 API 通常还有用于更新和删除数据的端点。
更多自动化
假设我们可能想要创建一个服务于许多表的 API。 从我们的数据库中自动为 Sequelize 生成模型是可能的并且非常方便。 Sequelize-auto 将为我们完成繁重的工作。 生成的文件 (models.js) 将放置并导入到 /models 目录中。
$ npm install sequelize-auto
使用这个连接器需要一个 node.js 连接器,我们已经为 MariaDB 安装了它。
结论
可以使用开发和运行 API Fedora, Fedora 默认 MariaDB、JavaScript 并有效地开发解决方案,例如使用 noSQL 数据库。 对于那些习惯于使用 MongoDB 或类似 noSQL 数据库的人, Fedora 和 MariaDB 是重要的开源推动者。
[ad_2]