使用 Fedora 在 JavaScript 中实现 REST API:第 2 部分

[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]

Related Posts