nodejs-koa2-mysql-sequelize-jwt
- 技術棧:nodejs, koa2, mysql, sequelize, jwt
- 項目數據層和操作層分明
- 使用koa2框架中間件,參數處理
- jwt做權限接口驗證
- sequelize管理mysql數據庫
- 異步處理async/await
- 已實現登錄注冊接口,文章增刪改查接口
- 喜歡或對你有幫助的話請點star✨✨,或有您有更好的建議和意見,請提出來告知我,可以留言issues,可以加我QQ: 841053515, Thanks.
項目地址 點擊跳轉https://github.com/liangfengbo/nodejs-koa2-mysql-sequelize-jwt.git
一、學習使用
git clone
git clone https://github.com/liangfengbo/nodejs-koa2-mysql-sequelize-jwt.git
1.1.安裝
npm install
1.2.需要在config文件下db.js配置本地數據庫
const sequelize = new Sequelize('數據庫', '數據庫用戶名', '數據庫密碼', {})
別忘了創建數據庫,黑窗口登錄msyql:create database '數據庫用戶名'
1.3.開啟服務
npm start
二、路由說明
// └──routes/index.js文件
const router = new Router({
prefix: '/api/v1'
})
/**
* 用戶接口
*/
// 用戶注冊
router.post('/user', UserController.create);
// 用戶登錄
router.post('/user/login', UserController.login);
// 獲取用戶信息
router.get('/user', UserController.getUserInfo);
// 獲取用戶列表
router.get('/user/list', UserController.getUserList);
// 刪除用戶
router.delete('/user/:id', UserController.delete);
/**
* 文章接口
*/
// 創建文章
router.post('/article', ArticleController.create);
// 獲取文章列表
router.get('/article', ArticleController.getArticleList);
// 獲取文章詳情
router.get('/article/:id', ArticleController.detail);
// 刪除文章
router.delete('/article/:id', ArticleController.delete);
// 更改文章
router.put('/article/:id', ArticleController.update);
三、接口說明(用戶接口)
創建用戶接口
/user
3.1.請求方式
post
3.2.請求參數
參數 | 說明 | 需求 |
---|---|---|
username | 用戶名 | 必填 |
password | 密碼 | 必填 |
3.3.返回數據
{
"code": 200,
"msg": "創建用戶成功",
"data": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IkJvYiIsImlkIjozLCJpYXQiOjE1Mjg3NzUzOTMsImV4cCI6MTUyODc3ODk5M30.cnWcgJQF1z7adgKp49AgP4UvpqIXUNjGfjWLMq-rMeA"
}
登錄接口
/user/login
3.4.請求方式
post
3.5.請求參數
參數 | 說明 | 需求 |
---|---|---|
username | 用戶名 | 必填 |
password | 密碼 | 必填 |
3.6.返回數據
{
"code": 200,
"msg": "登錄成功",
"data": {
"id": 3,
"username": "Bob",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IkJvYiIsImlkIjozLCJpYXQiOjE1Mjg3NzU0NTIsImV4cCI6MTUyODc3OTA1Mn0.v_B_EXvzYTk7Wz-jl4D8F5n5kn2iah8oht0s6S72Zsc"
}
}
獲取用戶信息
/user
3.7.請求方式
get
3.8.說明
token 一定要傳
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IuaigeWHpOazomJvIiwiaWQiOjUsImlhdCI6MTUyNzczNjc2NSwiZXhwIjoxNTI3NzQwMzY1fQ.y5w4lEFRf8bpR4fFPNDms1m9WSX9mfQ3fo5dejG7y3A
3.9.返回數據
{
"code": 200,
"msg": "查詢成功",
"data": {
"id": 3,
"username": "Bob"
}
}
刪除用戶接口
/user/:id
3.10.請求方式
delete
3.11.請求參數
參數 | 說明 | 需求 |
---|---|---|
id | 用戶ID | 必填 |
3.12.返回數據
{
"code": 200,
"msg": "刪除用戶成功"
}
四、項目主要文件
4.1.1schema文件
創建數據庫表
4.2.1modules文件
model層 - 主要處理參數
4.3.1controllers文件
控制器 - 處理數據庫增刪改查
4.4.1router 文件
路由
4.5.1app.js
入口文件
項目身份驗證使用了jwt,就是說登錄注冊和獲取用戶信息不用jwt驗證,其他接口都需要token驗證
比如注冊用戶接口:在postman軟件操作接口,例注冊接口:
post 請求
http://localhost:3000/api/v1/createUser?username=梁鳳波bo&password=bobo12345
創建成功后返回信息:
{
"code": 200,
"message": "創建成功",
"bean": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IuaigeWHpOazomJvIiwiaWQiOjUsImlhdCI6MTUyNzczNjUzMSwiZXhwIjoxNTI3NzQwMTMxfQ.GAQg-hZm3rDYq70-16sgfNHvD64gmrWSFzQCZQs7bl4"
}
}
注冊
post 請求
http://localhost:3000/api/v1/user/login?username=梁鳳波bo&password=bobo12345
成功返回信息:
{
"message": "登錄成功!",
"data": {
"id": 5,
"username": "梁鳳波bo",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IuaigeWHpOazomJvIiwiaWQiOjUsImlhdCI6MTUyNzczNjc2NSwiZXhwIjoxNTI3NzQwMzY1fQ.y5w4lEFRf8bpR4fFPNDms1m9WSX9mfQ3fo5dejG7y3A"
},
"code": 200
}
處理jwt驗證時候,我添加了方法
app.use(jwt({secret: secret.sign}).unless({path: [/^\/api\/v1\/login/, /^\/api\/v1\/createUser/]}))
登錄注冊都會返回token信息,除了這兩個接口必須要發送header頭
在header中加入token
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IuaigeWHpOazomJvIiwiaWQiOjUsImlhdCI6MTUyNzczNjc2NSwiZXhwIjoxNTI3NzQwMzY1fQ.y5w4lEFRf8bpR4fFPNDms1m9WSX9mfQ3fo5dejG7y3A
才能獲取到接口信息,而且token有效期是1個小時就失效。
具體可以看項目主要幾個文件代碼,一起學習進步,如果你有什么好的建議或意見,或如有錯誤懇請指導,請留言,謝謝
學習推薦鏈接:
koa2 實現jwt認證 作者日暮途遠_ https://www.jianshu.com/p/176198fbdb35
基於 Egg.js 框架的 Node.js 服務構建之用戶管理設計
如果對你學習nodejs有幫助,請給個星星star✨✨謝謝