您可以在Node.js,Express,Postgres和Docker的帮助下在JavaScript中构建CRUD API
#javascript #docker #restapi


要建立网站,您必须熟悉应用程序编程接口(API),这有助于软件系统之间的通信。在这里,您将学习如何在Express.js服务器和PostgreSQL数据库中在Node.js中创建CRUD REST API。本文将讨论Node-Postgres软件包及其如何将Express.js服务器链接到PostgreSQL。

API将与PostgreSQL数据库中标准化的HTTP请求方法兼容。 Postgresqland的安装也将介绍。

本文旨在允许API上的CRUD活动(获取,发布,放置和删除),以便您可以在数据库上运行查询。要获取数据,我们必须构建到每个端点和查询功能的路由。

什么是crud?

创建,读取,更新和删除(crud)是四个操作的缩写。它是用于在数据库中使用数据的过程的集合,并且广泛用于DBA工具和Web应用程序中。此外,要知道凝乳的好处以及为什么在2023年使用Angular,您应该聘请Angular Development Services。

创建:制作新数据库条目就是此过程的全部内容。例如,当用户在网站上打开帐户时,该人的详细信息将记录在数据库中。

阅读:数据在此过程中从数据库中获取或读取。例如,网站每次登录时从数据库中检索详细信息来验证用户的标识。

更新:在数据库中更改或更改先前存在的信息构成此活动。例如,当一个人在网站上编辑其个人资料信息时,该信息将在后端数据库中更新。

删除:执行此操作意味着从数据库中删除信息。如果一个人删除其帐户,则该个人的数据也将从网站的数据库中删除。

什么是REST API?

代表性状态转移或简称REST是一种体系结构样式,它定义了Web服务可能用于交互的一组限制。一个安息的API(应用程序编程界面)遵守这些准则并使用HTTP协议,以便客户端可以在服务器上访问和修改资源。

REST API是开发Web服务的一组准则,可促进程序之间的在线通信。它可以在不同系统之间实现可适应性,可扩展性和标准互操作性。 REST API通常在当今的在线开发中使用,是构建了几个成功的网站,应用程序和服务的骨干。

什么是express.js?

express.js是一个喜欢良好的node.js Web框架。尽管它提供了用于创建Node.js Web应用程序和API的裸露功能集,但其中间件框架使开发人员可以添加更高级的功能。专业的javascript development company可以帮助您利用Express.js的潜力。

express.js是一个既轻巧又适应的Web应用程序框架,允许个性化开发。它内置了支持处理JSON和XML等数据格式以及管理HTTP请求和答案的支持。雇用全球使用Express.js的角开发人员,因为它允许他们创建快速加载,可扩展和可靠的网站和API。

什么是postgresql?

PostgreSQL是一种免费的开源RDBM,强调了这些品质,并且具有弹性并符合SQL标准。起源于加州大学伯克利分校,今天得到了全球程序员的支持。

包含行和列的表用于在数据库中存储的PostgreSQL中组织数据。它能够处理各种数据格式并具有复杂的功能,包括交易,外键,触发器和存储程序。

PostgreSQL的可靠性和耐用性声誉已导致其在需要高通量和持续可访问性的企业级应用中广泛采用。它是开源的,支持多个平台,并具有慷慨的许可。

逐步指南

该过程在下面概述。

创建一个新的文件文件夹

mkdir node-crud-api

进入它。

CD节点-Crud-api

启动一个全新的NPM项目。

npminit -y

安装依赖项

npm i表达PGSequeLize

  • node.js的快递框架
  • PG驱动程序建立了与Postgres数据库的连接。
  • 而不是手动输入sql查询,我们可以使用semelize,一个对象相关映射器。

制作4个单独的文件

mkdir控制器路由util模型

启动您喜欢的集成开发环境并打开文件夹。要在终端中使用Visual Studio代码,请输入以下内容:

代码。

您现在应该有一个具有以下结构的文件:

是时候开始编写代码了。

数据库连接

在“ util”文件夹中创建一个数据库。

该文件的内容将为Node.js应用程序提供与当前活动的Postgres服务器通信所需的设置。

在util/database.js。
上填写数据库文件 storstequelize = require('sequelize');

storstequelize = new Newelize(
process.env.pg_db,
process.env.pg_user,
process.env.pg_password,
{
主机:process.env.pg_host,
方言:“ Postgres”,
}
);

module.exports = quelelize;

用户模型

在“型号”文件夹下创建一个名为“ user.js”的全新文件。

在这里,您可以在此示例中找到该模型,其中包含自动插入ID,名称和电子邮件地址的用户配置文件。通过雇用专家Nodejs development company

来创建此用户模型变得容易。

在模型/user.js中进行条目:

storstequelize = require('sequelize');
constdb = require('../ util/database');

const user = db.define('用户',{
id:{
类型:quelize.integer,
自动插入:true,
Allull:false,
primarykey:true
},
名称:sequelize.string,
电子邮件:quelize.string
});
Module.exports =用户;

控制器

制作一个名为“ user.js”的全新文件,并将其放在“型号”文件夹中。

在这里,您可以在此示例中找到该模型,其中包含自动插入ID,名称和电子邮件地址。
在模型/用户中进行条目:

const user = require('../ models/user');

// CRUD控制器

//获取所有用户
exports.getusers =(req,res,next)=> {
user.findall()
。然后(用户=> {
res.status(200).json({用户:用户});
})
.catch(err => console.log(err));
}

//获得ID
获取用户 exports.getuser =(req,res,next)=> {
constuserid = req.params.userid;
user.findbypk(userId)
。然后(用户=> {
如果(!用户){
returnres.status(404).json({消息:'未找到用户!'});
}
res.status(200).json({user:user});
})
.catch(err => console.log(err));
}

//创建用户
exports.createuser =(req,res,next)=> {
const name = req.body.name;
const email = req.body.email;
user.create({
名称:名称,
电子邮件:电子邮件
})
。然后(结果=> {
console.log('创建用户');
res.status(201).json({
消息:“用户成功创建!”,
用户:结果
});
})
.catch(err => {
console.log(err);
});
}

//更新用户,
exports.updateuser =(req,res,next)=> {
constuserid = req.params.userid;
constupdatedName = req.body.name;
constupdatedemail = req.body.email;
user.findbypk(userId)
。然后(用户=> {
如果(!用户){
returnres.status(404).json({消息:'未找到用户!'});
}
user.name = updatedName;
user.email = updatedEmail;
returnuser.save();
})
。然后(结果=> {
res.status(200).json({消息:'用户更新!',用户:结果});
})
.catch(err => console.log(err));
}

//删除用户
exports.deleteuser =(req,res,next)=> {
constuserid = req.params.userid;
user.findbypk(userId)
。然后(用户=> {
如果(!用户){
returnres.status(404).json({消息:'未找到用户!'});
}
returnuser.destroy({
哪里:{
ID:用户ID
}
});
})
。然后(结果=> {
res.status(200).json({消息:'用户删除!'});
})
.catch(err => console.log(err));
}

路由

“ users.js”文件应在“路由”文件夹中。

将用户添加到路由/用户.js文件。

const Controller = require('../控制器/用户');
const router = require('express')。router();

// CRUD路线/用户
router.get('/',controller.getusers); // /用户
router.get('/:userId',controller.getuser); ///user/:userId
router.post('/',controller.createuser); // /用户
router.put('/:userId',controller.updateuser); ///user/:userId
router.delete('/:userId',controller.deleteuser); ///user/:userId

module.exports =路由器;

索引文件

我们的程序需要在 /root目录中创建一个附加文件。该文件的内容将在Docker容器中运行。< /p>

在主文件夹中创建一个名为index.js的新文件。

在“ index.js file”中指示:

const express = require('express');
constbodyparser = require('Body-parser');
storstequelize = require('./ util/database');

const user = require('./ models/user');

const app = express();

app.use(bodyparser.json());
app.use(bodyparser.urlencoded({extended:false}));

app.use((req,res,next)=> {
res.setheader('access-control-allow-origin','*');
res.setheader(“访问控制 - 允许使用”,“获取,发布,put,delete');
next();
});

//测试路线
app.get('/',(req,res,next)=> {
res.send('Hello world');
});

// CRUD路线
app.use('/users',require('./ routes/users'));

//错误处理
app.use((错误,req,res,sext)=> {
console.log(error);
const status = error.statuscode || 500;
const消息= error.message;
res.status(状态).json({消息:消息});
});

//同步数据库
续集
.sync()
。然后(结果=> {
console.log(“连接数据库”);
app.listen(3000);
})
.catch(err => console.log(err));

docker part

让我们制作三个其他主要文件夹文件:

  • docker忽略(它以点开头)
  • Dockerfile(资本D)
  • docker-compose.yml

这是必须设置框架的方式:

中会有一条孤独线。 Docker忽略了该文件,其中读取:
node_modules

dockerfile

创建Docker映像需要易于使用但有效的文件。 Dockerfile是它的术语(资本D)。即使我们正在考虑更改名称,也让我们保持目标。

来自节点:14

#创建应用程序目录
WorkDir /App < /p>

复制软件包*.json ./
运行NPM安装
#捆绑应用程序源
复制 。 。
暴露3000
cmd [“ node”,“ index.js”]
Docker撰写文件

维护多个活动服务的一种简单方法是创建一个名为“ docker-compose.yml”的文件。

称为docker-compose.yml的文件:

版本:“ 3.9”
服务:
node_app:
container_name:node_app
构建:。
图片:francescoxx/node_live_app
端口:
- “ 3000:3000”
环境:
-pg_db = node_live_db
-pg_user = francesco
-pg_password = 12345
-pg_host = node_db
依赖性:
-node_db

node_db:
container_name:node_db
图片:Postgres:12
端口:
- “ 5432:5432”
环境:
-postgres_db = node_live_db
-postgres_user = francesco
-postgres_password = 12345
卷:
-node_db_data:/var/lib/postgresql/data

卷:
node_db_data:{}

创建一个docker映像,然后启动其中的容器。

使用容器管理PostgreSQL。
启动Postgres容器首先:

docker组成-d node_db

类型:访问日志。

docker撰写日志

理想情况下,您会看到这样的结果:

如果出现“数据库系统准备好接受连接”,我们可以继续进行。

使用tableplus查看是否有效。
可以通过选择加号。

可以建立新的链接。

只需从docker-compose.yml文件复制设置即可。如果您保留了默认设置,则密码为12345。


创建一个码头环境并启动服务。

第二步是创建我们的docker映像。

docker组成构建

我们现在可以开始服务。

docker组成node_app

终端应显示为输出。

将Postman放在应用程序的测试中。

让我使用Postman测试应用程序。

ping localhost:3000带有get请求。

ping localhost:3000/带有get请求的用户。

我们希望一个空数组作为答复。

我们将为三个用户提供:AAA,BBB和CCC。

让我们再次检查所有用户:

ping localhost:3000/带有get请求的用户。

应该有三个访客:

从一个人开始,例如用户2。

尝试将GET请求发送到Localhost:3000/users/2。

在这里我们将修改现有用户,例如用户2。

尝试向Localhost发送PUT请求:3000/用户/2带有新机构。

现在我们已经完成了,让我们消除用户#3。

首先将删除请求发送到Localhost:3000/users/3。

此外,我们可能会使用usetableplus来验证结果。

结论

开发人员可以遵循该项目的详细说明,在Docker中设置CRUD REST API,使用Node.js,Express,Postgres等工具,以及为什么在2023年使用Angular。本指南将帮助开发人员了解如何实现CRUD API和相关技术纳入自己的软件开发工作。