简介
@jhuang78/restify 是一个轻量级的 Node.js REST API 框架,能够提供快速稳定地构建数据密集型、实时性应用的服务。它使用了许多Node.js 的特性来提高性能,例如套接字I/O操作,非阻塞I/O和异步编程,它还为开发人员提供了可扩展性和可维护性的结构和功能。
这篇教程将指导你在使用 @jhuang78/restify 时需要了解的所有基础知识。
安装
在安装 @jhuang78/restify 之前,你需要在系统中安装 Node.js 和 NPM 包管理器。
通过 NPM 安装
使用 NPM 包管理器进行安装:
npm install @jhuang78/restify
通过 Yarn 安装
使用 Yarn 包管理器进行安装:
yarn add @jhuang78/restify
创建 REST API 应用程序
为了创建 REST API 应用程序并使用 @jhuang78/restify,你需要安装并导入 restify
包。
const restify = require('@jhuang78/restify'); const server = restify.createServer();
使用 createServer()
方法创建一个新的服务器实例,并返回一个 server
变量作为实例。
展示 API 存在
REST API 通常会公开一个 HTTP 端点以响应多个请求,这个 API 是在 REST 风格下运行的,并且遵循基本的 CRUD 操作。
定义 HTTP 端点
使用 server.get()
方法定义可以公开的 HTTP 端点 URL。
server.get('/', (req, res, next) => { res.send({ message: 'API 正在运行' }); return next(); });
监听端口
为了使应用程序上线并展示本机运行结果,我们需要使用 server.listen()
方法来监听 8080
端口。
server.listen(8080, () => { console.log(`API 正在运行并监听端口 ${server.address().port}`); });
现在,您应该可以在 http://localhost:8080
中看到 API 正在运行
的响应。
添加路由器
利用 REST 风格,我们需要为数据模型指定 API 端点。这个数据模型是我们将在 REST API 中公开的模型。
定义模型
定义模型很简单,我们将基于一个简单的 User 模型创建它。请记住,在创建模型时,在构造函数中传递默认值是可选的。例如,可以使用以下构造函数创建一个简单的 User 模型:
class User { constructor(firstName, lastName, username, password) { this.firstName = firstName || 'John'; this.lastName = lastName || 'Doe'; this.username = username || 'johndoe'; this.password = password || 'secret1234'; } }
定义路由器
添加路由器,我们将使用 restify.Router()
方法创建一个新的路由器实例。路由器可以使用常用组件如 GET, POST, PUT 和 DELETE。
-- -------------------- ---- ------- ----- ------ - ----------------- -- ------- --- --- -------------------- ----- ---- ----- -- - --- ----- - - --- ------------ ------ ---------- -------------- --- ------------ ------ ---------- ------------- -- ---------------- ------- ---
注意路由器在这里的行为方式,路由器通过对象 users
作为 REST API 端点响应。
将路由器添加到 REST API 应用中
为了使新的路由器实例在应用中执行,我们将其作为带有 URL 位置的中间件添加至基于 restify.createServer()
创建的服务器实例中。
server.use(router);
测试 API 端点
运行 REST API 应用程序并浏览 http: // localhost:8080 / users
,你应该能够看到如下信息:
-- -------------------- ---- ------- - - ------------ ------- ----------- ------ ----------- ---------- ----------- ------------ -- - ------------ ------- ----------- ------ ----------- ---------- ----------- ------------ - - -- -- ------------------------ ---- --- ---------- ------- - -------------------------------------------- --- ------------------------------- ------- ---- - ------------------------------------------------------------------------------ -------- ------------------------------------------------------------------------------------------------------------------------