在前端开发中,难免需要使用到一些自定义的接口或者数据库,这时候我们就需要一个后端服务来提供支持。如果你不想搭建一个完整的后端服务,可以使用 npm 包 @rope/server 来创建一个简单的 RESTful API。
什么是 @rope/server
@rope/server 是一个基于 Express 框架封装的 Node.js 服务包,开发者可以在几分钟内快速部署一个简单的 RESTful API 服务。
@rope/server 具有以下特点:
- 能够自动载入配置信息。
- 集成 jwt 认证和 XSS 防护功能。
- 支持多种 CRUD 操作。
如何使用 @rope/server
安装
使用 npm 安装 @rope/server:
npm install @rope/server
初始化项目
首先,需要创建一个新的项目,并在项目目录下创建一个 index.js 文件。
接着,在项目目录下创建 config 目录,并在其中创建 config.json 文件。config.json 文件应当包含与运行 @rope/server 相关的配置。
下面是一个基本的 config.json 文件示例:
-- -------------------- ---- ------- - ------- ----- ----------- - ------- ------------ ------- ----- ------- ------- ----------- --- ----------- ------ -- ------------- ---------------- -
在这个示例中,我们使用了本地 MySQL 数据库,端口设为 3306,并且指定了数据库用户名和密码。jwt_secret 是用于加密用户认证信息的密钥。
启动服务
接下来,在项目目录下的 index.js 文件中,添加以下代码:
const RopeServer = require('@rope/server'); const config = require('./config/config.json'); const server = new RopeServer(config); server.start().then(() => { console.log(`@rope/server is running on port ${config.port}`); });
这样就可以启动 @rope/server。
实现接口
在 @rope/server 中,使用 Controller 来定义接口,Controller 作为处理器在请求被路由匹配后调用。像下面这样:
-- -------------------- ---- ------- ----- -------------- - ----- --------- - -- ------ ----- -------- - ----- --------------- -------- - --------- - ----- -------- - ----- - ----- ---- --- - - ----------------- -- ---------------- ----- ---- - ----- ------------- ----- ---- --- --- -------- - ----- - - -------------- - ---------------
这里常见的两个方法就是增加和查询,可以根据需求扩展其他方法。需要注意的是,在 Controller 中,ctx 是 Koa 的 Context 对象,可以使用 Koa 提供的所有功能。在 Controller 中完成业务逻辑之后,需要给 ctx.body 赋值返回响应数据。
定义好 Controller 之后,需要将其与相应的 URL 进行映射。在 @rope/server 中,需要添加以下代码:
router.get('/user', 'UserController.list'); router.post('/user', 'UserController.add');
这里的第一个参数是 URL,第二个参数是将要执行的 Controller 对象的方法名。@rope/server 会自动将路由与功能模块关联起来,不需要再手动处理各种转发、请求参数等问题。
权限控制
在 @rope/server 中,集成了 jwt 认证以及 XSS 防护功能,在使用时仅需在 config.json 中设置 jwt_secret 参数即可。同时,可以使用 @rope/server 提供的装饰器来实现权限控制。
在 Controller 方法上添加 @AccessCheck 装饰器后,@rope/server 会启用 jwt 认证,未认证的请求将无法通过权限验证。内置权限控制器 AuthController 可以用于登录、登出等操作。
-- -------------------- ---- ------- -------------- ----- -------------- - ----- --------- - ----- -------- - ----- --------------- -------- - --------- - ----- -------- - ----- - ----- ---- --- - - ----------------- ----- ---- - ----- ------------- ----- ---- --- --- -------- - ----- - -
总结
@rope/server 是一个开箱即用的 Node.js 服务包,实现了包括路由、权限控制、jwt 认证、XSS 防护等诸多功能。利用它,我们可以快速创建一个简单的 RESTful API 服务,省去了复杂的后端搭建和维护。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005665181e8991b448e2749