0

0

部署nodejs rest api

WBOY

WBOY

发布时间:2023-05-11 14:28:06

|

476人浏览过

|

来源于php中文网

原创

在现今的互联网时代,构建高效、快速的后端服务是必不可少的。nodejs 在这个领域有着出色的表现,可以用快速和容易构建高效的 web 服务。而 rest api 再今天的互联网行业中也是非常流行的一种web服务建设方式。它可以极大地减少代码量、简化端口处理,除此之外还有很多好处。在此文中,我们将一起来学习如何使用 nodejs 和 expressjs 快速部署 rest api。

环境准备

在开始之前,我们需要搭建一下环境:

  1. 一个文本编辑器(推荐 VS Code)
  2. Node.js(官网下载并安装)
  3. Postman(测试工具,可在官网下载并安装)

初始化项目

首先,我们打开终端并创建一个新的项目目录:

mkdir project-name
cd project-name

然后,我们使用npm init 创建一个新的 package:

npm init

npm init 将会要求你输入一些基本信息,例如作者名,项目名称,版本等。一些默认的设置是可以直接使用的,只需修改一些你自己的信息即可。

接下来,我们将需要安装以下几个依赖:

npm install express body-parser cors —save
  • Express是我们用于构建REST API的框架。
  • body-parser是一个中间件,用于解析POST请求和JSON数据。
  • Cors是一个插件,允许Web应用程序在另一个域上启用 CORS(跨域资源共享)

创建服务

现在,让我们来创建一个名为app.js的新文件,这将是我们的 NodeJS REST API 服务的起点。我们可以借助 Express 框架来构建这个服务:

const express = require('express')
const bodyParser = require('body-parser')
const cors = require('cors')
const app = express()

const port = 3000

app.use(cors())

app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())

app.listen(port, () => {
  console.log(`Server running on port ${port}`)
})

在上面的代码段中,我们导入 Express,body-parser 和 cors。 我们还使用了监听端口 3000 的app.listen()方法。 最后,我们通过app.use()方法启用 cors 和 body-parser 的中间件。

创建路由

下一步将是创建路由,这是实现我们 REST API 服务所必需的。路由可以理解为请求进入服务后,服务应该如何响应的规则集合。

我们可以在项目根目录下创建一个routes文件夹,并在其中创建index.js文件,并添加以下内容:

const express = require('express')
const router = express.Router()

router.get('/posts', (req, res) => {
  res.status(200).send('All posts')
})

module.exports = router;

在上述代码中,我们创建了一个新的路由,并在该路由上创建了一个/posts的GET请求。该请求将返回一个状态码为200和文本“All posts”。

接下来,我们将启用该路由。我们回到app.js文件并添加以下内容:

const express = require('express')
const bodyParser = require('body-parser')
const cors = require('cors')
const app = express()

const postRoutes = require('./routes/index');
const port = 3000

app.use(cors())

app.use(bodyParser.urlencoded({ extended: true }))
app.use(bodyParser.json())

app.use('/api', postRoutes);

app.listen(port, () => {
  console.log(`Server running on port ${port}`)
})

在上述代码中,我们导入了定义在routes/index.js的路由,并使用app.use('/api', postRoutes)方法将路由应用于我们的 REST API 服务中。 然后,在localhost:3000/api/posts呼叫GET请求时,它应该返回“All posts”。

数据库连接

当然,在真正的项目中我们需要请求和获取的数据是会被放在数据库中存储的,所以我们需要在此处讨论如何使用NodeJS连接数据库。

我们将使用 MongoDB 作为我们的数据库,同时使用mongoose来连接它。我们可以在命令行中运行以下命令来安装 mongoose:

LobeHub
LobeHub

LobeChat brings you the best user experience of ChatGPT, OLLaMA, Gemini, Claude

下载
npm install mongoose --save

接下来,让我们来创建一个models文件夹,并在其中添加一个新文件post.js,以描述一个简单的数据模型。

const mongoose = require('mongoose');

const postSchema = new mongoose.Schema({
  title: { type: String, required: true },
  content: { type: String, required: true },
  author: { type: String, required: true },
}, { timestamps: true });

module.exports = mongoose.model('Post', postSchema);

在上面的代码中,我们定义了一个名为Post的模型,以定义我们的数据,并且在创建它时使用了 timestamps 选项。

现在,我们要使用 Mongoose 连接本地 MongoDB 数据库。可以在app.js文件中添加以下内容:

const mongoose = require('mongoose');
const express = require('express')
const bodyParser = require('body-parser')
const cors = require('cors')

const postRoutes = require('./routes/index');
const PORT = process.env.PORT || 3000;

const app = express();

app.use(cors());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

mongoose.connect('mongodb://localhost/posts', { useNewUrlParser: true, useUnifiedTopology: true });
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));
db.once('open', function() {
    console.log('Successfully connected to MongoDB!');
})

app.use('/api', postRoutes);

app.listen(PORT, () => {
  console.log(`Server running on port ${PORT}`);
});

以上代码的数据库URL设置为mongodb://localhost/posts,这表示数据库名为posts,并位于我们的本地MongoDB实例中。我们还使用了Mongoose端口的默认端口(27017)。需要注意的是,Mongoose已经被弃用的代码已经修复,所以我们必须使用useUnifiedTopology选项。

实现路由

我们已经在服务器中设置了路由,并且可以成功连接我们的数据库。接下来,我们要配置更多的路由,以处理 POST 请求并从我们的数据库中获取数据。

首先,我们在我们的路由中添加一个新的 POST 请求,并从请求体中提取出标题、内容、作者以及其他必要的信息。 并将数据存储到数据库中。在这里,我们将假设在数据库中名为“posts”,并且通过Post模型本身来创建一个MongoDB文档。

const express = require('express');
const router = express.Router();
const Post = require('../models/post.js');

router.get('/posts', (req, res) => {
  Post.find()
  .then(data => res.json(data))
  .catch(err => res.status(400).json(`Error: ${err}`));
});

router.get('/posts/:id', (req, res) => {
  Post.findById(req.params.id)
  .then(data => res.json(data))
  .catch(err => res.status(400).json(`Error: ${err}`));
});

router.post('/posts', (req, res) => {
  const newPost = new Post(req.body);
  newPost.save()
  .then(() => res.json('Post added!'))
  .catch(err => res.status(400).json(`Error: ${err}`));
});

module.exports = router;

顶部的代码中,我们首先导入了我们的模型文件,并创建所有需要的路由GET或POST请求。 GET请求使用Post.find()从MongoDB数据库中提取所有数据库条目,而我们的POST请求使用newPost.save()将新数据存储到数据库表中。

使用 Postman 进行测试

做完上述步骤后,可以使用 Postman 对我们的 REST API 进行测试。

首先,我们尝试使用GET请求检索数据,我们可以通过访问http://localhost:3000/posts来检索所有的文章。

接下来,我们尝试使用POST请求创建新数据,我们可以通过访问http://localhost:3000/posts并在请求的主体中添加一个新的JSON数据体来创建新文章。

最后,我们还可以使用GET请求检索单个条目,我们可以通过访问http://localhost:3000/posts/:id来检索从ID所提供的单个文章。

通过这些简单的步骤,我们就可以实现一个简单的 REST API 并与 MongoDB 数据库连接了。当然,还有很多其他的操作可以继续完善这个 API,例如更新和删除条目等操作,但是我们建议您尝试自己去编写这些功能来深入了解这个过程。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
node.js调试
node.js调试

node.js调试可以使用console.log()输出调试信息、断点调试和第三方调试工具。详细介绍:1、console.log()输出调试信息,通过在代码中插入console.log()语句,开发人员可以在控制台输出变量的值、函数的执行结果等信息,以便观察代码的执行流程和状态;2、断点调试,可以在代码中设置断点,以便在特定位置暂停代码的执行,观察变量的值和执行流程等。

347

2023.09.19

JavaScript 全栈开发基础(Node.js + 前端)
JavaScript 全栈开发基础(Node.js + 前端)

本专题系统介绍 JavaScript 在全栈开发中的核心知识结构,涵盖 Node.js 基础、Express/Koa 接口构建、前端交互设计、模块化与包管理、数据库连接、前后端数据通信与部署流程。通过完整项目示例,帮助学习者掌握从浏览器到服务器的一体化开发能力,实现真正意义上的全栈入门。

93

2025.11.26

什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

178

2024.05.11

Golang 中间件开发与微服务架构
Golang 中间件开发与微服务架构

本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

213

2025.12.18

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

415

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

533

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

310

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

75

2025.09.10

Java编译相关教程合集
Java编译相关教程合集

本专题整合了Java编译相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号