使用 Node.js 创建 REST API

嘿!欢迎回来,你。希望您喜欢我上一篇关于使用和不使用 TypeScript 创建 Rest API 的文章。您可能已经注意到,我是后端开发的爱好者。我真的很喜欢将项目组织到 MVC 中。

因此,今天我们将仅使用 Node.js、Express 和 Nodemon 构建一个 Rest API。我将教授使用这些构建工具启动项目的基础知识。您还将在这里看到一些有关 Node.js、Express 和 Docker 的内容!

首先,我们要做最基本的:

npm init -y

该命令将启动您的小项目。确保将其放入与您的项目相关的目录中,k?

此外,此命令将为我们提供 package.json 和 package-lock.json。在这些中,我们可以为我们今天所做的事情创建自己的命令行。

您将看到使用 npm init 创建的内容。然后我们将使用:

npm install express --save-dev

请注意,我们使用“–save-dev”标志来确保我们安装express仅用于开发目的。

使用后立即:

npm install nodemon --save-dev

该软件包使我们能够实时查看我们的升级。它给我们带来的好处是不必一直关闭和启动我们的服务器(很烦人,对吧?)。

好的。到目前为止我们已经做了很多,对吧?恭喜您在此之前所做的努力。如果您有任何疑问,请先查看 Node.js 的文档,然后查看 Express,然后查看 Nodemon,好吗?

就我而言,我也有机会了解 DevOps。所以我要教一些基本的东西。第一的:

touch docker-compose.yaml

如果您像我一样使用 Linux,您就会知道这个命令会创建文件。只是。

Int docker-compose.yaml 写入一些内容,例如:
version: '3'
services:
database:
image: mysql:8.0.29
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: dev_to_example_db
ports:
- "3306:3306"

这是 docker compose 的示例。它对于开始为您的项目编写和创建数据库很有用。检查https://docs.docker.com/get-started/overview/上的文档

您是否注意到我们在这个小项目中没有使用 .env ?这是因为使用 Express 和 Node.js raw 是启动 Rest API 的基础。他们说幸福在于简单,对吗?我同意。

现在,要使用 Docker 容器,我们还必须创建一个 Dockerfile。使用:

touch Dockerfile

然后在你的 Dockerfile 中写入:
`FROM node:16

我们选择的端口的定义是在 docker compose 上,还记得吗?

暴露3001

这个公开设置是为了让 Docker 了解我们想要使用哪个端口

工作目录/应用程序

在这里,我们复制使用 npm init 创建的 .json。

通过这样做,我们确保安装的依赖项将保持相同的版本

复制包*.json ./

运行 npm 安装

复制 。。

CMD [“npm”,“开始”]`

由于我们在此容器中创建了 Node.js 应用程序,因此我们也必须在 docker compose 上为此应用程序设置配置。在创建第一个服务之前,我们将编写:
`version: ‘3’
services:
node:
# 它使 docker 基于我们的 Dockerfile
build:
dockerfile: ./Dockerfile
context: 构建自定义镜像。
# 命名我们的容器使其更容易
container_name: dev_to_example_api
# 它会重新启动我们的容器,以防出现某些问题导致容器停止
restart:always
# 我们执行的默认目录
working_dir: /app
# 从外部映射到的卷(目录)列表在
volumes中:
# mounts当前目录将我们项目的所有数据放入 /app 目录
– ./:/app
ports:
# 公开我们应用程序的默认端口
# 永远记住第一个是外门,第二个是我们的门(在我们的门中)计算机)
– 3001:3001
环境:
# 这里我们正在设置我们的环境设置。这不是一个好的做法,因为它可能会暴露有关您的项目的一些重要信息。
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_HOST: database
MYSQL_PORT: 3306
# 通知 docker 应用程序必须在我们的数据库之后启动
depends_on:
– “database”

数据库:
图像:mysql:8.0.29
重新启动:始终
环境:
MYSQL_ROOT_PASSWORD:根
MYSQL_DATABASE:trybecashdb
端口:
-“33060:3306”`

好吧!您现在实际上已经是一名 DevOps 人员了!设置 docker 使用的配置后:

docker-compose up -d #this -d flag indicates that we're going to set our container to be working on background

但是我们希望在运行容器后立即创建数据库,对吗?这让我们的生活变得轻松。在您的 docker compose 上写入,就在我们的 Node 应用程序服务中的 ports 行之后:
volumes:
- ./dev_to_example.sql:/docker-entrypoint-initdb.d/dev_to_example.sql

现在做:

docker-compose down && docker-compose up -d

这是为了让您能够使用我们的新设置重新启动和启动您的 docker compose。

现在让我们将express 连接到我们的数据库,以便我们最后可以创建我们的Rest API。

在此之前,让我们安装用于创建数据库的方言。使用:

npm install [email protected] --save-exact

这个命令准确地建立了我们的方言,就像标志警报一样。使用另一种方言会使我们的数据库发生冲突。

创建一个名为“connection.js”的文件并在其上写入:
“const mysql = require(‘mysql2/promise’);

const connection = mysql.createPool({
主机:process.env.MYSQL_HOST || ‘localhost’,
端口:process.env.MYSQL_PORT || 3306,
用户:process.env.MYSQL_USER || ‘root’,
密码:process.env .MYSQL_PASSWORD || ‘root’,
数据库:process.env.DB_NAME || ‘dev_to_example_db’,
waitForConnections:true,
connectionLimit:10,
queueLimit:0,
});

module.exports = 连接;`

这是一个连接池。它使我们的应用程序更容易理解。顾名思义,它多次与许多事物联系在一起。使连接变得容易。这些连接需要时间来执行每个连接。

创建一个app.js文件:

touch app.js

现在在其中写入:
`const express = require(‘express’);

常量应用程序 = Express();

app.use(express.json());

module.exports = 应用程序;`

然后创建一个server.js:

touch server.js

并在其中写入:
`const app = require(‘./app’);
const 连接 = require(‘./db/connection’);

常量端口=3001;

app.listen(PORT, async () => {
console.log( Dev.to API executed in ${PORT});`

现在……要快乐!之后,您可以开始使用数据库命令。正如您所看到的,我使用 MySQL 来创建此 API。从现在开始,您可以看到在 MySQL Workbench 上创建的数据库。使用 SQL 命令进行更健壮的编码,k?从现在开始你可以查看MySQL文档。

非常感谢,下次再见!

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索