介绍
angel-server 是一款基于 Node.js 环境的框架,它能够快速搭建一个面向 RESTful 的 API 服务器。它提供了非常丰富的功能,包括但不限于:
- 自动路由
- 中间件支持
- WebSocket 支持
- 配置文件管理
- JWT 鉴权支持
并且,angel-server 本身也是一个开放源代码的 npm 包,可以在项目中作为依赖引入。
本文将介绍如何使用 angel-server 搭建一个简单的 RESTful API 服务器。
安装
使用 npm 命令来安装 angel-server:
npm install angel-server
首先,我们创建一个项目文件夹,然后在该文件夹下创建一个 index.js 文件。
mkdir my-project cd my-project touch index.js
打开 index.js 文件,输入以下内容:
-- -------------------- ---- ------- ----- ----- - ------------------------ ----- --- - -------- ------------ ----- ---- -- - ---------------- --------- --- ---------------- -- -- - ------------------- ------- -- ---- ------- ---
以上代码创建了一个 angel 实例,并使用 app.get() 方法设置了一个路由,用于响应根路径的 GET 请求,并返回一段简单的 Hello World 字符串。接着,启动服务器:
node index.js
然后,打开浏览器,访问 http://localhost:3000 ,应该会看到 "Hello, World!" 字符串。
路由
设置路由的方式和 Express.js 很相似。需要先创建一个 angel 实例,并使用 app.get()、app.post()、app.put()、app.delete() 等方法分别设置 GET、POST、PUT、DELETE 等 HTTP 请求的路由。
设置路由规则
使用 app.get('/path', handler) 来设置一个 GET 请求的路由规则。其中,'/path' 是路由的路径,handler 是一个用于处理请求的处理器函数。例如:
app.get('/users', (req, res) => { res.send('<h1>Users List</h1>'); });
以上代码设置了一个名为 "/users" 的路由,用于响应 GET 请求,并返回一个包含 "
Users List
" 字符串的相应。注意,路由规则按照代码书写的先后顺序生效。因此,应当把路由规则的定义放在所有中间件的前面。
路由参数
在 angel-server 中,通过添加路由规则的参数来处理动态路径。
在路由路径中,使用 ":" 运算符定义一个路由参数。
app.get('/users/:userId', (req, res) => { res.send(`Hello, user ${req.params.userId}!`); });
在以上代码中,:userId 就定义了一个名为 userId 的路由参数。在访问 http://localhost:3000/users/123 时,req.params.userId 的值就是 "123"。
路由参数匹配规则
可以使用正则表达式来控制参数的匹配规则。
app.get(/\/users\/(\d+)/, (req, res) => { res.send(`Hello, user ${req.params[0]}!`); });
在以上代码中,路由路径是一个正则表达式。正则表达式的子表达式将匹配到的值存储在 req.params 数组中。例如,访问 http://localhost:3000/users/123,req.params[0] 的值将会是 "123"。
中间件
使用 app.use() 方法来添加中间件。
-- -------------------- ---- ------- ------------- ---- ----- -- - ------------------- --------- ------------- ------------- ------- --- ----------------- ----- ---- ----- -- - -- -------------------- - ------ -------------------- - ------- ---
上面的代码展示了如何定义一个简单的记录请求时间和请求URL的中间件,它会在每次请求进来时自动执行。又如,在 "/admin" 路径前,定义了一个名为 "auth" 的中间件,它用于检查是否已经进行了身份验证。
此外,Express.js 开发者可以在 angel-server 中直接使用 Express.js 中的中间件库。例如:
const bodyParser = require('body-parser'); const cors = require('cors'); app.use(bodyParser.json()); app.use(cors());
WebSocket
Angel-server 是一个支持 WebSocket 的框架。可以用以下方式创建一个 WebSocket 服务器:
-- -------------------- ---- ------- ----- ----- - ------------------------ ----- --- - -------- ----------- ---- ---- -- - ---------------- ----- -- - ---------------------- --------- ------------ ----- --------- --- --- ---------------- -- -- - ------------------- ------- -- ---- ------- ---
在以上代码中,调用 app.ws() 方法创建了一个 WebSocket 服务器。当客户端连接进来时,服务端会返回一个 WebSocket 实例。可以在这个实例上注册 message 事件以便接收客户端的数据,并用 send() 方法发送响应数据。
配置文件
使用 app.config 方法可以简单配置一个 JSON 配置文件。
-- -------------------- ---- ------- ----- ----- - ------------------------ ----- --- - -------- ------------ ----- ----- ------- --- ------ ----- -------- --- ---- --- ------------ ----- ---- -- - -------------------------------- --- ------------------------------ -- -- - ------------------- ------- -- ---- ------------------------ ---
在以上代码中,使用 app.config() 方法简单配置一个 JSON 配置文件,然后使用 app.config() 方法获取配置项。
JWT 鉴权
使用 angel-server 部署一个安全的 API 已经变得非常简单。我们可以使用 JSON Web Token (JWT) 来添加基于令牌的身份验证。这个包可以让您通过一个简单的请求头像客户端传递身份验证令牌。可以使用 JWT 的 jsonwebtoken
来创建和验证令牌:
-- -------------------- ---- ------- ----- ----- - ------------------------ ----- --- - ------------------------ ----- --- - -------- ----- ------ - ---------------- ------------- ---- ----- -- - -- --------- --- --------- - ------ ------- - ----- ----- - --------------------------------- ------ -- -------- - ------ -------------------- - --- - ----- ------- - ----------------- -------- -------- - -------- ------- - ----- ----- - -------------------- - --- ------------------ ----- ---- -- - ----- - --------- -------- - - --------- -- --------- --- ------- -- -------- --- ----------- - ------ -------------------- - ----- ----- - ---------- -------- -- -------- ---------- ----- --- --- ----------------- ----- ---- -- - ----------- ----- ------- -- - ----- ----- ---- --- ---------------- -- -- - ------------------- ------- -- ---- ------- ---
以上代码创建了一个简单的用户 Auth 服务,用于生成 JWT 令牌。在 /login 路径下,当用户名和密码都是 "admin" 时,即返回一个包含 JWT 令牌的响应。在 /users 路径中,使用了 jwt.verify() 方法来验证 JWT 令牌是否有效。
总结
本文展示了如何在 Node.js 中使用 angel-server 搭建一个 RESTful API 服务器,如何设置路由规则、添加中间件、使用 WebSocket 和 JWT 鉴权等技术。除此之外,angel-server 还有非常多的功能和选项,可以去官方网站查看文档。
希望本文对你有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/63625