前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Express,Sequelize和MySQL的Node.js Rest API示例

Express,Sequelize和MySQL的Node.js Rest API示例

作者头像
ccf19881030
发布于 2020-11-10 02:30:40
发布于 2020-11-10 02:30:40
12.7K00
代码可运行
举报
文章被收录于专栏:ccf19881030的博客ccf19881030的博客
运行总次数:0
代码可运行

Express,Sequelize和MySQL的Node.js Rest API示例

本文翻译自Node.js Rest APIs example with Express, Sequelize & MySQL

最新修改:2020年9月29号 bezkoder Node.js

Express是Node.js最受欢迎的Web框架之一,支持路由,中间件,视图系统…Sequelize是基于Promise的Node.js ORM,它支持Postgres,MySQLSQL Server的方言。在本教程中,我将 向您展示如何使用Express,Sequelize和MySQL数据库来构建Node.js Restful CRUD API

您应该首先在机器上安装MySQL。 可以在以下位置找到安装说明: Official MySQL installation manual

相关文章:

全栈:

安全性:Node.js – JWT Authentication & Authorization example 部署:Deploying/Hosting Node.js app on Heroku with MySQL database

Node.js Rest CRUD API概述

我们将构建Rest Apis,它可以创建,检索,更新,删除和按标题查找教程。 首先,我们从Express Web服务器开始。 接下来,我们为MySQL数据库添加配置,使用Sequelize创建Tutorial模型,编写控制器。 然后,我们定义用于处理所有CRUD操作(包括自定义查找程序)的路由。

下表概述了将要导出的Rest API:

Methods

Urls

Actions

GET

api/tutorials

get all Tutorials

GET

api/tutorials/:id

get Tutorial by id

POST

api/tutorials

add new Tutorial

PUT

api/tutorials/:id

update Tutorial by id

DELETE

api/tutorials/:id

remove Tutorial by id

DELETE

api/tutorials

remove all Tutorials

GET

api/tutorials/published

find all published Tutorials

GET

api/tutorials?title=[kw]

find all Tutorials which title contains ‘kw’

最后,我们将使用Postman测试Rest Apis。

这是我们的项目结构:

示例视频

这是我们的与MySQL数据库一起运行的Node.js Express Sequelize应用程序演示,并通过Postman测试Rest Apis。

创建Node.js应用

首先,我们创建目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ mkdir nodejs-express-sequelize-mysql
$ cd nodejs-express-sequelize-mysql

接下来,我们使用package.json文件初始化Node.js App:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm init

name: (nodejs-express-sequelize-mysql) 
version: (1.0.0) 
description: Node.js Rest Apis with Express, Sequelize & MySQL.
entry point: (index.js) server.js
test command: 
git repository: 
keywords: nodejs, express, sequelize, mysql, rest, api
author: bezkoder
license: (ISC)

Is this ok? (yes) yes

我们需要安装必要的模块:expresssequelizemysql2body-parser。 运行命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install express sequelize mysql2 body-parser cors --save

package.json文件应如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "name": "nodejs-express-sequelize-mysql",
  "version": "1.0.0",
  "description": "Node.js Rest Apis with Express, Sequelize & MySQL",
  "main": "server.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [
    "nodejs",
    "express",
    "rest",
    "api",
    "sequelize",
    "mysql"
  ],
  "author": "bezkoder",
  "license": "ISC",
  "dependencies": {
    "body-parser": "^1.19.0",
    "cors": "^2.8.5",
    "express": "^4.17.1",
    "mysql2": "^2.0.2",
    "sequelize": "^5.21.2"
  }
}

建立Express Web服务器

在根目录下,创建一个新的server.js文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");

const app = express();

var corsOptions = {
  origin: "http://localhost:8081"
};

app.use(cors(corsOptions));

// parse requests of content-type - application/json
app.use(bodyParser.json());

// parse requests of content-type - application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: true }));

// simple route
app.get("/", (req, res) => {
  res.json({ message: "Welcome to bezkoder application." });
});

// set port, listen for requests
const PORT = process.env.PORT || 8080;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}.`);
});

我们要做的是:

  • 导入expressbody-parsercors模块:
    • Express用于构建Rest API
    • body-parser有助于解析请求并创建req.body对象
    • cors提供了Express中间件,以使CORS具有多种选择。
  • 创建一个Express应用,然后使用app.use()方法添加body-parsercors中间件。 请注意,我们设置了origin:http:// localhost:8081
  • 定义一个易于测试的GET路由。
  • 在端口8080上侦听传入请求。

现在,使用以下命令运行该应用:node server.js。 使用URL http:// localhost:8080/打开浏览器,您将看到:

是的,第一步已经完成。 在下一节中,我们将与Sequelize一起协作。

配置MySQL数据库并进行序列化

在app文件夹中,我们创建一个单独的config文件夹,然后使用db.config.js文件进行配置,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
  HOST: "localhost",
  USER: "root",
  PASSWORD: "123456",
  DB: "testdb",
  dialect: "mysql",
  pool: {
    max: 5,
    min: 0,
    acquire: 30000,
    idle: 10000
  }
};

前面5个参数用于MySQL连接。

pool是可选的,它将用于Sequelize连接池配置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- max:池中的最大连接数
- min:池中的最小连接数
- idle:连接释放之前可以空闲的最长时间(以毫秒为单位)
- acquire:该池将在抛出错误之前尝试获取连接的最长时间(以毫秒为单位)

有关更多详细信息,请访问API Reference for the Sequelize constructor

初始化Sequelize

我们将在下一步包含模型的app/models文件夹中初始化Sequelize。

现在,使用以下代码创建app/models/index.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const dbConfig = require("../config/db.config.js");

const Sequelize = require("sequelize");
const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, {
  host: dbConfig.HOST,
  dialect: dbConfig.dialect,
  operatorsAliases: false,

  pool: {
    max: dbConfig.pool.max,
    min: dbConfig.pool.min,
    acquire: dbConfig.pool.acquire,
    idle: dbConfig.pool.idle
  }
});

const db = {};

db.Sequelize = Sequelize;
db.sequelize = sequelize;

db.tutorials = require("./tutorial.model.js")(sequelize, Sequelize);

module.exports = db;

不要忘记在server.js中调用sync()方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
const app = express();
app.use(...);

const db = require("./app/models");
db.sequelize.sync();

...

在开发中,您可能需要删除现有表并重新同步数据库。 只需使用force:true即可,如下代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
db.sequelize.sync({ force: true }).then(() => {
  console.log("Drop and re-sync db.");
});

定义Sequelize模型

在models文件夹中,像这样创建tutorial.model.js文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = (sequelize, Sequelize) => {
  const Tutorial = sequelize.define("tutorial", {
    title: {
      type: Sequelize.STRING
    },
    description: {
      type: Sequelize.STRING
    },
    published: {
      type: Sequelize.BOOLEAN
    }
  });

  return Tutorial;
};

该Sequelize模型表示MySQL数据库中的tutorials表。 这些列将自动生成:id, title, description, published, createdAt, updatedAt.

初始化Sequelize之后,我们无需编写CRUD函数,Sequelize支持所有这些功能:

  • 创建一个新的教程:create(object)
  • 通过id查找教程:findByPk(id)
  • 获取所有教程:findAll()
  • 通过id:update(data, where: { id: id })
  • 删除教程:destroy(where: { id: id })
  • 删除所有教程:destroy(where:{})
  • 按标题查找所有教程:findAll({ where: { title: … } })

这些功能将在我们的控制器中使用。

我们可以通过为每个教程添加评论来改进示例。 这是一对多关系,我为此编写了一个教程: Sequelize Associations: One-to-Many example – Node.js, MySQL

或者,您可以为每个教程添加标签,并将教程添加到标签(多对多关系): Sequelize Many-to-Many Association example with Node.js & MySQL

创建控制器

app/controllers文件夹中,让我们使用以下CRUD函数创建tutorial.controller.js:

  • create
  • findAll
  • findOne
  • update
  • delete
  • deleteAll
  • findAllPublised
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const db = require("../models");
const Tutorial = db.tutorials;
const Op = db.Sequelize.Op;

// Create and Save a new Tutorial
exports.create = (req, res) => {
  
};

// Retrieve all Tutorials from the database.
exports.findAll = (req, res) => {
  
};

// Find a single Tutorial with an id
exports.findOne = (req, res) => {
  
};

// Update a Tutorial by the id in the request
exports.update = (req, res) => {
  
};

// Delete a Tutorial with the specified id in the request
exports.delete = (req, res) => {
  
};

// Delete all Tutorials from the database.
exports.deleteAll = (req, res) => {
  
};

// Find all published Tutorials
exports.findAllPublished = (req, res) => {
  
};

让我们实现这些功能。

创建一个新对象

创建并保存一个新教程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
exports.create = (req, res) => {
  // Validate request
  if (!req.body.title) {
    res.status(400).send({
      message: "Content can not be empty!"
    });
    return;
  }

  // Create a Tutorial
  const tutorial = {
    title: req.body.title,
    description: req.body.description,
    published: req.body.published ? req.body.published : false
  };

  // Save Tutorial in the database
  Tutorial.create(tutorial)
    .then(data => {
      res.send(data);
    })
    .catch(err => {
      res.status(500).send({
        message:
          err.message || "Some error occurred while creating the Tutorial."
      });
    });
};

检索对象(有条件)

从数据库中检索所有教程/按标题查找:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
exports.findAll = (req, res) => {
  const title = req.query.title;
  var condition = title ? { title: { [Op.like]: `%${title}%` } } : null;

  Tutorial.findAll({ where: condition })
    .then(data => {
      res.send(data);
    })
    .catch(err => {
      res.status(500).send({
        message:
          err.message || "Some error occurred while retrieving tutorials."
      });
    });
};

我们使用req.query.title从Request中获取查询字符串,并将其作为findAll()方法的条件。

检索单个对象

查找具有ID的单个教程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
exports.findOne = (req, res) => {
  const id = req.params.id;

  Tutorial.findByPk(id)
    .then(data => {
      res.send(data);
    })
    .catch(err => {
      res.status(500).send({
        message: "Error retrieving Tutorial with id=" + id
      });
    });
};

更新对象

更新由请求中的id标识的教程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
exports.update = (req, res) => {
  const id = req.params.id;

  Tutorial.update(req.body, {
    where: { id: id }
  })
    .then(num => {
      if (num == 1) {
        res.send({
          message: "Tutorial was updated successfully."
        });
      } else {
        res.send({
          message: `Cannot update Tutorial with id=${id}. Maybe Tutorial was not found or req.body is empty!`
        });
      }
    })
    .catch(err => {
      res.status(500).send({
        message: "Error updating Tutorial with id=" + id
      });
    });
};

删除对象

删除具有指定id的教程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
exports.delete = (req, res) => {
  const id = req.params.id;

  Tutorial.destroy({
    where: { id: id }
  })
    .then(num => {
      if (num == 1) {
        res.send({
          message: "Tutorial was deleted successfully!"
        });
      } else {
        res.send({
          message: `Cannot delete Tutorial with id=${id}. Maybe Tutorial was not found!`
        });
      }
    })
    .catch(err => {
      res.status(500).send({
        message: "Could not delete Tutorial with id=" + id
      });
    });
};

删除所有对象

从数据库中删除所有教程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
exports.deleteAll = (req, res) => {
  Tutorial.destroy({
    where: {},
    truncate: false
  })
    .then(nums => {
      res.send({ message: `${nums} Tutorials were deleted successfully!` });
    })
    .catch(err => {
      res.status(500).send({
        message:
          err.message || "Some error occurred while removing all tutorials."
      });
    });
};

按条件查找所有对象

查找所有published = true的教程:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
exports.findAllPublished = (req, res) => {
  Tutorial.findAll({ where: { published: true } })
    .then(data => {
      res.send(data);
    })
    .catch(err => {
      res.status(500).send({
        message:
          err.message || "Some error occurred while retrieving tutorials."
      });
    });
};

可以对该控制器进行一些修改以返回分页响应:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "totalItems": 8,
    "tutorials": [...],
    "totalPages": 3,
    "currentPage": 1
}

您可以在以下位置找到更多详细信息: Server side Pagination in Node.js with Sequelize and MySQL

定义路由

当客户端使用HTTP请求(GET,POST,PUT,DELETE)发送对端点的请求时,我们需要通过设置路由来确定服务器的响应方式。

这些是我们的路由:

  • /api/tutorials:GET,POST,DELETE
  • /api/tutorials/:id:GET,PUT,DELETE
  • /api/tutorials/published:GET 在app/routes文件夹中创建一个turorial.routes.js,其内容如下:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = app => {
  const tutorials = require("../controllers/tutorial.controller.js");

  var router = require("express").Router();

  // Create a new Tutorial
  router.post("/", tutorials.create);

  // Retrieve all Tutorials
  router.get("/", tutorials.findAll);

  // Retrieve all published Tutorials
  router.get("/published", tutorials.findAllPublished);

  // Retrieve a single Tutorial with id
  router.get("/:id", tutorials.findOne);

  // Update a Tutorial with id
  router.put("/:id", tutorials.update);

  // Delete a Tutorial with id
  router.delete("/:id", tutorials.delete);

  // Delete all Tutorials
  router.delete("/", tutorials.deleteAll);

  app.use('/api/tutorials', router);
};

您可以看到我们使用了/controllers/tutorial.controller.js中的控制器。

我们还需要在server.js中包含路由(在app.listen()之前):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...

require("./app/routes/turorial.routes")(app);

// set port, listen for requests
const PORT = ...;
app.listen(...);

测试API

使用以下命令运行我们的Node.js应用程序:node server.js。 控制台显示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Server is running on port 8080.
Executing (default): DROP TABLE IF EXISTS `tutorials`;
Executing (default): CREATE TABLE IF NOT EXISTS `tutorials` (`id` INTEGER NOT NULL auto_increment , `title` VARCHAR(255), `description` VARCHAR(255), `published` TINYINT(1), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;
Executing (default): SHOW INDEX FROM `tutorials`
Drop and re-sync db.

使用Postman,我们将测试以上所有的Apis。

1、使用POST/tutorials Api创建一个新教程

创建一些新教程后,您可以检查MySQL表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select * from tutorials;
+----+-------------------+-------------------+-----------+---------------------+---------------------+
| id | title             | description       | published | createdAt           | updatedAt           |
+----+-------------------+-------------------+-----------+---------------------+---------------------+
|  1 | JS: Node Tut #1   | Tut#1 Description |         0 | 2019-12-13 01:13:57 | 2019-12-13 01:13:57 |
|  2 | JS: Node Tut #2   | Tut#2 Description |         0 | 2019-12-13 01:16:08 | 2019-12-13 01:16:08 |
|  3 | JS: Vue Tut #3    | Tut#3 Description |         0 | 2019-12-13 01:16:24 | 2019-12-13 01:16:24 |
|  4 | Vue Tut #4        | Tut#4 Description |         0 | 2019-12-13 01:16:48 | 2019-12-13 01:16:48 |
|  5 | Node & Vue Tut #5 | Tut#5 Description |         0 | 2019-12-13 01:16:58 | 2019-12-13 01:16:58 |
+----+-------------------+-------------------+-----------+---------------------+---------------------+

2、使用GET /tutorials Api检索所有的教程

3、使用GET /tutorials/:id Api根据id查询单个教程

4、使用`PUT /tutorials/:id’ Api更新教程

在更新某些行后,请查看tutorials表:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select * from tutorials;
+----+-------------------+-------------------+-----------+---------------------+---------------------+
| id | title             | description       | published | createdAt           | updatedAt           |
+----+-------------------+-------------------+-----------+---------------------+---------------------+
|  1 | JS: Node Tut #1   | Tut#1 Description |         0 | 2019-12-13 01:13:57 | 2019-12-13 01:13:57 |
|  2 | JS: Node Tut #2   | Tut#2 Description |         0 | 2019-12-13 01:16:08 | 2019-12-13 01:16:08 |
|  3 | JS: Vue Tut #3    | Tut#3 Description |         1 | 2019-12-13 01:16:24 | 2019-12-13 01:22:51 |
|  4 | Vue Tut #4        | Tut#4 Description |         1 | 2019-12-13 01:16:48 | 2019-12-13 01:25:28 |
|  5 | Node & Vue Tut #5 | Tut#5 Description |         1 | 2019-12-13 01:16:58 | 2019-12-13 01:25:30 |
+----+-------------------+-------------------+-----------+---------------------+---------------------+

5、使用GET /tutorials?title=node查找标题包含’node’的所有教程

6、使用GET /tutorials/published Api查询所有已发布的教程

7、使用’DELETE /tutorials/:idApi删除一个教程 ![Delete a Tutorial](https://img-blog.csdnimg.cn/20201108192646838.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NjZjE5ODgxMDMw,size_16,color_FFFFFF,t_70#pic_center) id = 2的教程已从tutorials`表中删除:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select * from tutorials;
+----+-------------------+-------------------+-----------+---------------------+---------------------+
| id | title             | description       | published | createdAt           | updatedAt           |
+----+-------------------+-------------------+-----------+---------------------+---------------------+
|  1 | JS: Node Tut #1   | Tut#1 Description |         0 | 2019-12-13 01:13:57 | 2019-12-13 01:13:57 |
|  3 | JS: Vue Tut #3    | Tut#3 Description |         1 | 2019-12-13 01:16:24 | 2019-12-13 01:22:51 |
|  4 | Vue Tut #4        | Tut#4 Description |         1 | 2019-12-13 01:16:48 | 2019-12-13 01:25:28 |
|  5 | Node & Vue Tut #5 | Tut#5 Description |         1 | 2019-12-13 01:16:58 | 2019-12-13 01:25:30 |
+----+-------------------+-------------------+-----------+---------------------+---------------------+

8、使用’DELETE /tutorialsApi删除所有的教程 ![Delete all Tutorials](https://img-blog.csdnimg.cn/20201108192823367.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NjZjE5ODgxMDMw,size_16,color_FFFFFF,t_70#pic_center) 现在在tutorials`表中没有一行数据了:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> SELECT * FROM tutorials;
Empty set (0.00 sec)

结论

今天,我们已经学习了如何使用Express Web服务器创建Node.js Rest Apis。 我们还知道添加MySQL数据库和Sequelize配置,创建Sequelize模型,编写控制器以及定义用于处理所有CRUD操作的路由的方法。

您可以在下一个教程中找到更多有趣的东西:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
    "totalItems": 8,
    "tutorials": [...],
    "totalPages": 3,
    "currentPage": 1
}

学习愉快! 再见。

进一步阅读

将教程数据从文件上传到MySQL数据库表: - Node.js: Upload Excel file data into MySQL Database - Node.js: Upload CSV file data into MySQL Database

源代码

您可以在Github上找到此示例的完整源代码。

如果要为每个教程添加评论。 它是一对多关联,有一个有关该关系的教程:Sequelize Associations: One-to-Many example – Node.js, MySQL

或者,您可以为每个教程添加标签,并将教程添加到标签(多对多关系): Sequelize Many-to-Many Association example with Node.js & MySQL

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/11/08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
30分钟用Node.js构建一个API服务器[每日前端夜话0x70]
Node.js 对初学者来说可能是令人望而却步的,其灵活的结构和缺乏严格的规范使它看起来很复杂。
疯狂的技术宅
2019/05/21
2.1K0
Express.js Tutorial: Build RESTful APIs with Node and Express | Mosh
在Youtube上看到Mosh的一篇关于使用Node和Express构建RESTful APIs的示例,对应的视频地址是:Express.js Tutorial: Build RESTful APIs with Node and Express | Mosh,作者Mosh的Youtube地址是:Programming with Mosh
ccf19881030
2020/05/18
1.6K0
2. 许愿墙(Node.js+Express+art-template+MySQL)
本节项目对这本书的“许愿墙”demo做了优化,整个页面样式功能以及后端接口处理都做了优化,效果如下:
爱学习的程序媛
2022/04/07
1.7K0
2. 许愿墙(Node.js+Express+art-template+MySQL)
express新手入门指南
Node.js 已经成为 Web 后台开发圈一股不容忽视的力量,凭借其良好的异步性能、丰富的 npm 库以及 JavaScript 语言方面的优势,已经成为了很多大公司开发其后台架构的重要技术之一,而 Express 框架则是其中知名度最高、也是最受欢迎的后端开发框架。在这篇教程中,你将了解 Express 在 Node 内置 http 模块的基础上做了怎样的封装,并掌握路由和中间件这两个关键概念,学习和使用模板引擎、静态文件服务、错误处理和 JSON API,最终开发出一个简单的个人简历网站。
前端迷
2020/03/26
3.3K0
express新手入门指南
Vue.js + Node.js + Express + MySQL示例:构建全栈CRUD应用程序
上次修改时间:2020年10月16日 bezkoder Full Stack,Node.js,Vue.js
ccf19881030
2020/11/10
25.1K0
Vue.js + Node.js + Express + MySQL示例:构建全栈CRUD应用程序
后端实战教程:如何使用 Node.js 开发 RESTful API 接口(Node.js + Express + Sequelize + MySQL)
本教程手把手教你搭建一套使用 Node.js + Express + Sequelize + MySQL 构建的后端服务,详细描述通过 Node.js 与数据库通讯。整个服务搭建起来后,我们使用 Postman 对整个后端服务进行测试。本教程每段代码我都亲手测过,保证百分百没有错误,请打开你的 terminal 跟随本教程一起操作,从这里开始,成为一名后端工程师。
蒋川@卡拉云
2022/07/11
11.9K0
后端实战教程:如何使用 Node.js 开发 RESTful API 接口(Node.js + Express + Sequelize + MySQL)
Express 基于 Node.js 平台,快速、开放、极简的 Web 开发框架
初始化目录: npm init 安装 Express: npm install express --save HelloWorld: 创建app.js //导入express const express = require('express') //创建app对象 const app = express() //构建请求 app.get('/',(req, res)=>res.send('hello world')) //配置app监听3000端口 app.listen(3000, ()=>consol
前端小鑫同学
2022/12/24
1K0
Node.js ORM 框架 sequelize 实践
本文作者:IMWeb zzbozheng 原文出处:IMWeb社区 未经同意,禁止转载 Node.js ORM 框架 sequelize 实践 最近在做积木系统2.0,这次使用的nodejs
IMWeb前端团队
2018/01/08
3.6K0
开箱即用!Node.js+Mysql模块封装
最近在写毕设,采用的是学弟+自己的技术栈,运用Vue3+ElementPlus搞前端,Node.js express做后端,毕竟,java那东西确实不在我技术栈里。
是乃德也是Ned
2023/03/01
1.1K0
开箱即用!Node.js+Mysql模块封装
Express.js 4,Node.js,MongoDB REST API 简易教程
教程内容 采用测试驱动开发的方式,开发一个简单的 REST API,包括基本的 POST/GET/PUT/DELETE 操作 先编写好针对各个接口的测试代码,包括: 调用post接口插入一个对象 调用get接口获取某个对象的数据 调用get接口获取集合数据 调用put接口更新某个对象数据 调用get接口获取更新后的对象 调用delete接口删除对象 然后针对第一个测试进行代码编写,写完后执行测试,第一个测试通过后,继续开发下一个,再进行测试,这样迭代进行 测试框架采用 Mocha,WEB框架采用 Expre
dys
2018/04/04
2.7K0
从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(二)
我们在平时所用到的一些网站、App,它们会将我们的数据进行保存,当我们关闭这些网站或者 App 后,下次打开还能看到我们之前的一些文字、视频记录。在迷你全栈电商应用实战系列的第二篇教程中,我们将通过基于 Node.js 平台的 Express[1] 框架实现后端 API 数据接口,并且将数据存储在 MongoDB[2] 中。这样我们的网站就能够记录用户添加的商品,并且无论以后什么时候打开,都能获取我们之前的记录。
一只图雀
2020/04/07
3.1K0
Node.js学习笔记——Express、路由、中间件、接口跨域解决方案详解(附实例)
Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架 通俗的理解:Express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建 Web 服务器的。 本质就是一个 npm 上的第三方包,提供了快速创建 Web 服务器的便捷方法 中文官网 http://www.expressjs.com.cn/
timerring
2022/07/20
3.7K0
Node.js学习笔记——Express、路由、中间件、接口跨域解决方案详解(附实例)
node.js:试试express
Express 框架是一个快速、开放、极简的 web 应用开发框架,用于构建灵活和强大的 web 应用和 API。它是 Node.js 平台上最流行的框架之一,因为它提供了一套丰富的功能来简化和加速 web 开发过程。
姓王者
2024/12/20
810
使用NodeJs(Express)搞定用户注册、登录、授权
首先做一下声明,本篇博客来源于BiliBili上全栈之巅主播Johnny的视频[1小时搞定NodeJs(Express)的用户注册、登录和授权(https://www.bilibili.com/video/av49391383),对其进行了整理。自己跟着视频做,感觉收获不少。 最近在学些NodeJs和Express框架开发后台接口,Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能。看到B站上全栈之巅-Node.js+Vue.js全栈开发深度爱好者和实践者,感觉Johnny博主的系列视频讲解得不错,其中看到一个视频是1小时搞定NodeJs(Express)的用户注册、登录和授权,介绍了在Express中怎么做用户登录和注册,以及jsonwebtoken的验证,需要在系统中安装MongoDB数据库;于是在自己的Windows10系统下使用VSCode跟着做,前提是要安装好NodeJs和Express开发环境,以及在Windows系统中配置好MongoDB数据库,关于在Windows下安装MongoDB可以参考菜鸟教程中的Windows 平台安装 MongoDB和windows环境下启动mongodb服务。
ccf19881030
2020/02/23
10.3K0
Node.js学习笔记(三)——Node.js开发Web后台服务
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具。 使用 Express 可以快速地搭建一个完整功能的网站。使用Node.js作为AngularJS开发Web服务器的最佳方式是使用Express模块。
张果
2022/09/28
8.1K0
Node.js学习笔记(三)——Node.js开发Web后台服务
使用Vue3和Node.js开发管理端系统实践
开始之前推荐一篇实用的文章:探索微信小程序的奇妙世界:从入门到进阶原创 ,这篇文章从入门到进阶,全面剖析小程序开发流程与技巧,适合各层次开发者,助力快速掌握并提升技能,推荐大家前往阅读。
用户3484293
2024/12/02
2770
React + Node.js 全栈实战教程 - 手把手教你搭建「文件上传」管理后台
本教程手把手带领大家搭建一套通过 React + Node.js + Mongodb 上传文件的后台系统,只要你跟随本教程一步步走,一定能很好的理解整个前后端上传文件的代码逻辑。前端我们使用 Reactjs + Axios 来搭建前端上传文件应用,后端我们使用 Node.js + Express + Multer + Mongodb 来搭建后端上传文件处理应用。
蒋川@卡拉云
2022/07/11
15.4K0
React + Node.js 全栈实战教程 - 手把手教你搭建「文件上传」管理后台
Node.js—Express使用、Express 路由 、Express 中间件、托管静态资源、使用 Express 写接口、node.js链接sqlite数据库
首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录。
HelloWorldZ
2024/03/20
2K3
Node.js—Express使用、Express 路由 、Express 中间件、托管静态资源、使用 Express 写接口、node.js链接sqlite数据库
如何使用Node.js和Express实现Web应用程序中的文件上传
处理文件上传:使用Node.js和Express构建Web应用程序时,文件上传是一个常见的需求。在本教程中,您将学习如何使用Node.js和Express处理上传的文件。
zayyo
2024/02/09
3600
如何在 Node.js 中使用 TypeScript
这是一篇为初学者详细介绍如何在 Node.js 中使用 TypeScript的指南。本指南将涵盖基础知识、开发环境的设置以及一些实用的代码示例。希望这篇文章能够帮助你顺利入门并在未来的项目中应用这些技术。
摸五休二
2024/06/21
7990
如何在 Node.js 中使用 TypeScript
推荐阅读
相关推荐
30分钟用Node.js构建一个API服务器[每日前端夜话0x70]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文