Node.js 使用Restify创建一个简单的API

Node.js 使用Restify创建一个简单的API

Restify 是一个npm包,用于在Nodejs中创建高效且可扩展的RESTful API。使用Restify创建API的过程非常简单。

但首先,如果您对API不熟悉并且想要了解更多信息,您可以参考本文的文章 here 。

本文将包含以下内容:

  • 安装Restify并在我们的简单Nodejs应用程序中使用Restify创建服务器。
  • 创建一个简单的API并向客户端传递所需的数据。
  • 在我们的本地系统上测试创建的API。

为了简化起见,我们将使用Restify创建一个API,该API将为我们提供以下内容:

根据输入路由中的州的名称,API将提供有关州的基本信息,即其首都,语言等。

我们将要构建的示例的实时示例如下图所示:

Node.js 使用Restify创建一个简单的API

因此,使用 Restify 构建 API 的步骤如下:

步骤1: 首先,在一个新的文件夹/目录中 创建一个 Server.js 文件 ,然后通过在命令行中输入以下命令 初始化 npm

npm init -y

步骤2: 然后,我们需要在命令行中执行下面的命令来安装我们所需的包“Restify”:

npm install restify

步骤3: 安装rectify后,我们需要在我们的Server.js文件中引入rectify包。引入包的代码非常简单,如下所示:

var restify = require('restify');

实施: 现在我们已经安装了该软件包,我们可以在我们的Server.js文件中使用Restify创建一个服务器。具体代码如下:

var server = restify.createServer();
server.listen(8080, function () {
    console.log("server is listening on port 8080");
});

到目前为止,我们已经允许我们的应用程序使用修正,并且创建了一个监听端口为8080的服务器。

现在我们可以创建不同的路由,这将允许客户端从我们的API获取数据。

在我们的Server.js文件中,我们需要添加以下代码:

server.get('/:stateName', sendInformation);
function sendInformation(req, res, next) {
    // this is the function which will get 
    // triggered when the /:stateName route
    // will be called
    res.send("Got the request");
}

以上代码的解释:

  • server.get()函数有两个参数。第一个参数指定路由(此案例中为“/:stateName”),第二个参数指定当用户访问此路由时要触发的函数(在此案例中为发送信息)。
  • 路由中名字前的分号指定“name”为参数,我们可以根据此参数为用户提供不同的数据。

现在,为了发送数据,我们将创建一个包含所有与州相关的信息的常量变量,并根据用户提供的参数在发送信息的函数中使用它。

const stateData = [
    {
        state: "Rajasthan",
        capital: "Jaipur",
        regionalLanguages: ["Marwari", "Rajasthani"],
        noOfDistricts: 33
    },
    {
        state: "Punjab",
        capital: "Chandigarh",
        regionalLanguages: ["Punjabi"],
        noOfDistricts: 23
    },
    {
        state: "Uttar Pradesh",
        capital: "Lucknow",
        regionalLanguages: ["Braj", "Awadhi", ", Bagheli"],
        noOfDistricts: 75
    },
    {
        state: "Gujarat",
        capital: "Gandhinagar",
        regionalLanguages: ["Gujrati"],
        noOfDistricts: 33
    },
    {
        state: "Kerala",
        capital: "Thiruvananthapuram",
        regionalLanguages: ["Malayalam"],
        noOfDistricts: 14
    }
]

为了简化和解释的目的,我们只使用了5个州的数据。

到目前为止,我们已经创建了我们的数据对象,以及简单的路由“/:stateName”(参数为名称),现在我们将在发送信息的函数内编写代码,该函数将向用户发送州的数据。

以下是代码:

function sendInformation(req, res, next) {
    // req.params represents the parameters 
    // in the request(which is "name")
    let stateName = req.params.stateName;

    // iterating in the whole array of stateData so as to 
    // find the state entered by the user.
    for (let i = 0; i < stateData.length; i++) {

        //if the name given by user matches the 
        // with any object's state.
        if (stateName == stateData[i].state) {
            //sending the data through res.send() function.
            res.send(stateData[i]);
        }
    }
}

上面代码的解释如下: req.params 允许我们获取请求中参数的值。因此,我们使用 req.params.stateName 来知道用户请求的是哪个州的数据,并将其存储在一个名为 stateName 的变量中。 在这之后,我们使用一个简单的 for 循环遍历整个数组,在 for 循环内部,我们查找与用户在请求中输入的州的名称匹配的州。 如果 stateData 数组中的任何一个州与用户输入的州匹配,我们将使用 res.send() 函数发送整个州的数据。 到目前为止,我们已经创建了一个简单的路由,并使用发送信息函数将数据发送给用户。因此,我们现在已经完成了使用 Restify 创建的简单 API,它基本上允许用户获取任何州的数据。我们可以将此 API 部署在一些免费的主机平台上。但是现在,我们只是在本地系统上进行测试。此外,我们可以使用 Restify 创建一些更复杂的 API,其中可能包含一些更复杂的数据和逻辑。 完整代码如下所示: JavaScript

const restify = require('restify');
const stateData = [
    {
        state: "Rajasthan",
        capital: "Jaipur",
        regionalLanguages: ["Marwari", "Rajasthani"],
        noOfDistricts: 33
    },
    {
        state: "Punjab",
        capital: "Chandigarh",
        regionalLanguages: ["Punjabi"],
        noOfDistricts: 23
    },
    {
        state: "Uttar Pradesh",
        capital: "Lucknow",
        regionalLanguages: ["Braj", "Awadhi", ", Bagheli"],
        noOfDistricts: 75
    },
    {
        state: "Gujarat",
        capital: "Gandhinagar",
        regionalLanguages: ["Gujrati"],
        noOfDistricts: 33
    },
    {
        state: "Kerala",
        capital: "Thiruvananthapuram",
        regionalLanguages: ["Malayalam"],
        noOfDistricts: 14
    }
]
 
let server = restify.createServer();
function sendInformation(req, res, next) {
 
    // req.params represents the parameters 
    // in the request(which is "name")
    let stateName = req.params.stateName;
 
    // iterating in the whole array of stateData 
    // so as to find the state entered by the user.
    for (let i = 0; i < stateData.length; i++) {
 
        // if the name given by user matches 
        // the with any object's state.
        if (stateName == stateData[i].state) {
 
            //sending the data through res.send() function.
            res.send(stateData[i]);
 
        }
    }
}
 
server.get('/:stateName', sendInformation);
 
server.listen(8080, function () {
    console.log("server is listening on port 8080");
});

运行应用程序的步骤: 输入以下代码在终端中运行服务器:

node server.js

注意: 我们可以在浏览器的地址栏中输入“localhost:8080/”,后面跟上我们需要获取数据的州。

输出:

Node.js 使用Restify创建一个简单的API

我们可以看到,当我们在路由中输入“Rajasthan”时,我们会得到与“Rajasthan”州相关的数据。同样,如果用户想要获取关于“Kerala”州的数据,他/她会在路由中输入“Kerala”,然后所需的数据将提供给用户。

这就是使用名为“Restify”的包在Node.js中创建REST API的方式。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程