Restify 是一个 npm 包,用于在 Node.js 中创建高效且可扩展的 RESTful API。使用 Restify 创建 API 的过程非常简单。构建 RESTful API 是许多 Web 应用程序的常见需求。Restify 是一个流行的 Node.js 框架,它简化了 RESTful 服务的创建工作。它轻量、快速,并且是专门为 API 开发而设计的。在本指南中,我们将引导大家完成使用 Restify 设置一个简单 API 的全过程。
但首先,如果你不熟悉什么是 API 并且想了解更多信息,你可以参考相关的入门文章。
本文将包含以下内容:
- 在我们简单的 Node.js 应用中安装 Restify 并使用 Restify 创建服务器。
- 创建一个简单的 API 并将所需的数据传递给客户端。
- 在我们的本地系统上测试创建的 API。
为了简单起见,我们将使用 Restify 制作一个 API,它将为我们提供以下功能。根据路由中输入的州名,该 API 将为我们提供有关该州基本信息的数据,即其首府、语言等。我们要构建的实例如下图所示
安装步骤
步骤 1: 首先,在一个新的文件夹/目录中 创建一个 Server.js 文件,然后通过在命令行中输入以下命令来 初始化 npm:
npm init -y
步骤 2: 然后,我们需要在命令行中执行以下命令来安装我们需要的名为“Restify”的包:
npm install restify
步骤 3: 安装 Restify 后,我们需要在 Server.js 文件中引入(require)该包。引入包的代码非常简单,如下所示:
const restify = require(‘restify‘);
项目结构:
package.json 文件中更新的依赖项将如下所示:
"dependencies": {
"restify": "^11.1.0",
}
实现步骤: 现在我们已经安装了该包,我们可以在 Server.js 文件中使用 Restify 创建服务器了。相关代码如下:
const server = restify.createServer();
server.listen(8080, function () {
console.log("server is listening on port 8080");
});
到目前为止,我们已经允许应用使用 Restify,并创建了一个监听 8080 端口的服务器。现在我们可以创建不同的路由,这将允许客户端从我们的 API 获取数据。在我们的 Server.js 文件中,我们需要添加以下代码:
server.get(‘/:stateName‘, sendInformation);
function sendInformation(req, res, next) {
// 这是当 /:stateName 路由
// 被调用时将被触发的函数
res.send("Got the request");
}
上述代码的解释:
- server.get() 函数有两个参数。第一个指定路由(在此例中为“/:stateName”),第二个指定当用户访问该路由时触发的函数(在此例中为 sendInformation)。
- 路由中名称前的冒号(:)指定了“name”是一个参数,我们可以根据这个参数向用户提供不同的数据。
现在,为了发送数据,我们将创建一个常量变量(包含与州相关的所有信息),我们将根据用户提供的参数在 sendInformation 函数中使用它。
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”(以 name 作为参数),现在我们将在 sendInformation 函数内部编写代码,以便将州的数据发送给用户。代码如下:
“`
function sendInformation(req, res, next) {
// req.params 代表请求中的参数
// (即 "stateName")
let stateName = req.params.stateName;
// 遍历整个 stateData 数组,以便
// 查找用户输入的州。