使用nodejs-koa2-mysql-sequelize-jwt 實現項目api接口


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✨✨謝謝


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM