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
// └──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.請求方式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.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✨✨謝謝