📜  NodeJS |在 express 中构建简单的 REST API(1)

📅  最后修改于: 2023-12-03 15:17:57.881000             🧑  作者: Mango

NodeJS | 在 express 中构建简单的 REST API

在现代Web应用程序和服务器端开发中,REST API已成为一个非常普遍的技术架构。它使得服务器端和客户端可以分别完全独立地开发,提高了Web应用程序的高扩展性和弹性。NodeJS是出色的服务器端JavaScript环境,非常适合REST API的实现。在NodeJS中,Express是最受欢迎的Web框架之一,因为其在使用和灵活性之间取得了完美的平衡。本文将介绍如何使用NodeJS和Express构建简单的REST API。

安装和准备工作

在开始开发REST API之前,我们需要确保Node.js和npm已经安装在我们的开发环境中。本文还将使用express和nodemon模块,这两个模块可以通过npm进行安装。

在终端中使用以下命令进行检测:

node -v
npm -v

如果返回了版本号,则说明这些程序已经安装好了。如果没有安装,可以使用官方网站上的安装指南进行安装。

创建项目和启动开发服务器

我们开始使用express创建一个新的项目。使用以下命令生成一个新的express应用程序:

express myapp

然后,进入myapp目录并使用以下命令安装依赖项:

cd myapp
npm install

完成安装之后,可以开始启动开发服务器。使用以下命令启动服务器:

npm start

这将在终端窗口中输出“Express server listening on port 3000”。现在,在浏览器中打开http://localhost:3000/,可以看到Express的欢迎页面。

创建简单的REST API

我们将创建一个简单的REST API,它可以将HTTP GET请求转发到一个静态的JSON文件中。我们将使用/bears端点作为我们的API入口。首先,我们需要在服务器中创建一个新的路由器,负责处理/bears请求。

在routes文件夹中创建一个新文件bears.js,将以下代码添加到该文件中:

var express = require('express');
var router = express.Router();
var bears = require('../data/bears.json');

router.get('/', function(req, res) {
  res.json(bears);
});

module.exports = router; 

这里我们引入了express库,创建了一个新的路由器对象并将其导出。此路由器将处理所有/bears请求。我们还导入了一个JSON文件bears.json,该文件包含了熊的信息,我们希望将其作为响应发送给客户端。

在应用程序的主文件app.js中,将以下代码添加到文件的底部,负责将/bears端点路由到bears.js路由器。

var bears = require('./routes/bears');
app.use('/bears', bears);

这里我们引入了刚才创建的bears.js路由器,并使用app.use将其所处理的请求路由到/bears端点。此路由器将响应/bears端点请求,并发送包含在bears.json文件中的熊信息的响应。

现在,在浏览器中输入http://localhost:3000/bears,即可查看包含在bears.json文件中的熊的信息。

使用测试框架Jasmine进行自动化测试

上面的代码虽然简单,但它是稳定的吗?如果我们在更新代码后不小心破坏了某些东西会怎么样?这时候,我们需要一个测试框架,可以确保我们的代码一直是稳定和可靠的。

我们将使用Jasmine自动化测试框架来进行REST API的单元测试。使用以下命令安装Jasmine。

npm install --save-dev jasmine

在项目的根目录中创建一个新文件夹spec,并在该文件夹中创建一个新文件bearsSpec.js,包含以下测试用例代码:

var request = require('request');

describe('Bears API', function() {
  describe('GET /bears', function() {
    it('returns status code 200', function() {
      request.get('http://localhost:3000/bears', function(error, response, body) {
        expect(response.statusCode).toBe(200);
        done();
      });
    });

    it('returns valid json', function() {
      request.get('http://localhost:3000/bears', function(error, response, body) {
        expect(() => {
          JSON.parse(body)
        }).not.toThrow();
        done();
      });
    });

    it('returns all bears', function() {
      request.get('http://localhost:3000/bears', function(error, response, body) {
        var bears = JSON.parse(body);
        expect(bears.length).toBe(5);
        done();
      });
    });
  });
});

这里我们定义了GET /bears请求的三个单元测试用例,测试它们是否返回了正确的响应。

现在,在命令行中使用以下命令来运行测试:

node_modules/.bin/jasmine

如果一切都正常,应该会输出三个测试用例都运行成功的结果。

总结

在本文中,我们介绍了如何使用Node.js和Express构建一个简单的REST API,并使用Jasmine测试框架对其进行了自动化单元测试。我们看到,Express的简单API和出色的测试框架使得它是构建高扩展性和可靠性的Web应用程序的最佳选择之一。