部署nodejs rest api

在现今的互联网时代,构建高效、快速的后端服务是必不可少的。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:

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,例如更新和删除条目等操作,但是我们建议您尝试自己去编写这些功能来深入了解这个过程。

以上就是部署nodejs rest api的详细内容,更多请关注其它相关文章!