背景
最近在学习nodejs以及相关框架koa。后来发现学习时是学会了,但是没过多久再想使用时又忘了,于是决定通过一个小demo的形式将所学及所用的知识记录一下,便于日后回顾和使用。
案例介绍
本文将通过一个简单的小案例来搭建一个基于nodejs+koa的后端服务。主要涉及到的功能点有:
- token生成及校验
- token校验中间件
- 不同模块路由拆分及组合
- 用户登录及信息查询API
- db相关操作类封装
- 常用工具类封装
用到的知识点及第三方库
- jsonwebtoken: 用于生成及校验token
- koa: 服务端框架
- koa-router:处理路由
- koa-static:处理静态资源
- koa-bodyparser:解析post请求参数
- mssql:连接SqlServer数据库
- nodeman:自动重启服务
具体实现思路
配置公共类库
- 首先在utils目录下新建一个config.js用于添加一些通用的配置信息,在本文中我们先添加两个属性:PRIVATE_KEY和EXPIRED用于保存生成token时的秘钥和过期时间
// utils/config.js
module.exports = {
"PRIVATE_KEY":"TOKEN-DEMO-SECRET",
"EXPIRED": 60*60*24
}
- 在utils目录下新建一个HttpCode.js文件,用于封装一些自定义的常用的http错误码和错误信息(非必须,看个人喜好和业务需要)
// utils/HttpCode.js
module.exports = {
Success: {
success_ok: 2000,
success_ok_msg: '请求成功',
success_created: 2001,
success_created_msg: '请求已创建',
success_accepted: 2002,
success_accepted_msg: '请求已受理'
},
Redirect: {
redirect_moved_permanently: 3001,
redirect_moved_permanently_msg: '请求资源已被永久移动到新位置',
redirect_moved_temporarily: 3002,
redirect_moved_temporarily_msg: '请求资源临时从其它url相应请求',
redirect_not_modified: 3004,
redirect_not_modified_msg: '资源未更改,直接从协商缓存中获取'
},
RequestError: {
request_error_bad_request: 4000,
request_error_bad_request_msg: '无效的请求',
request_error_unauthorized: 4001,
request_error_unauthorized_msg: '请求未授权,检查请求头部是否包含token信息',
request_error_forbidden: 4003,
request_error_forbidden_msg: '请求被拒绝,token无效或已过期',
request_error_not_found: 4004,
request_error_not_found_msg: '请求资源在服务器上不存在',
request_error_method_not_allowed: 4005,
request_error_method_not_allowed_msg: '请求方式不被允许'
},
ServerError: {
server_error_internal_error: 5000,
server_error_internal_error_msg: '服务器内部错误',
server_error_not_imp: 5001,
server_error_not_imp_msg: '服务器不支持当前请求'