使用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

1、學習使用

git clonehtml

git clone https://github.com/liangfengbo/nodejs-koa2-mysql-sequelize-jwt.git

1.1.安裝node

npm install

1.2.須要在config文件下db.js配置本地數據庫mysql

const sequelize = new Sequelize('數據庫', '數據庫用戶名', '數據庫密碼', {})

別忘了建立數據庫,黑窗口登陸msyql:create database '數據庫用戶名'

1.3.開啓服務git

npm start

2、路由說明

// └──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);

3、接口說明(用戶接口)

建立用戶接口
/user

3.1.請求方式github

post

3.2.請求參數sql

參數 說明 需求
username 用戶名 必填
password 密碼 必填

3.3.返回數據數據庫

{
    "code": 200,
    "msg": "建立用戶成功",
    "data": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IkJvYiIsImlkIjozLCJpYXQiOjE1Mjg3NzUzOTMsImV4cCI6MTUyODc3ODk5M30.cnWcgJQF1z7adgKp49AgP4UvpqIXUNjGfjWLMq-rMeA"
}
登陸接口
/user/login

3.4.請求方式npm

post

3.5.請求參數api

參數 說明 需求
username 用戶名 必填
password 密碼 必填

3.6.返回數據app

{
    "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、項目主要文件

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

相關文章
相關標籤/搜索