当前位置: 首页 > 后端技术 > Node.js

使用nodejs-koa2-mysql-sequelize-jwt实现项目api接口

时间:2023-04-03 16:11:53 Node.js

nodejs-koa2-mysql-sequelize-jwt技术栈:nodejs,koa2,mysql,sequelize,jwt项目数据层和运行层明确使用koa2框架中间件,参数处理jwt进行权限接口验证sequelize管理mysql数据库异步处理async/await的登录和注册界面已经实现。如果喜欢文章的增删改查界面,请点星??如果对您有帮助,或者您有更好的建议和意见,请告诉我,有问题可以留言,可以补充我的QQ:841053515,谢谢。项目地址点击跳转https://github.com/liangfengbo/nodejs-koa2-mysql-sequelize-jwt.git1.学习使用gitclonegitclonehttps://github.com/liangfengbo/nodejs-koa2-mysql-sequelize-jwt.git1.1。安装npminstall1.2。需要在config文件下的db.js中配置本地数据库constsequelize=newSequelize('database','databaseusername','databasepassword',{})别忘了创建数据库,登录到黑色窗口的msyql:createdatabase'数据库用户名'1.3。启动服务npmstart2.路由描述//└──routes/index.js文件constrouter=newRouter({prefix:'/api/v1'})/***用户界面*///用户注册路由器.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);/***文章界面*///Createanarticlerouter.post('/article',ArticleController.create);//Getarticlelistrouter.get('/article',ArticleController.getArticleList);//Getarticledetailsrouter.get('/article/:id',ArticleController.detail);//Deletethearticlerouter.delete('/article/:id',ArticleController.delete);//Changethearticlerouter.put('/article/:id',ArticleController.update);Three,Interfacedescription(userinterface)Createuserinterface/user3.1.Requestmethodpost3.2.RequestparameterparameterdescriptionRequiresusernameUsernameisrequiredpasswordPasswordisrequired3.3.Returndata{"code":200,"msg":"创建用户成功","data":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IkJvYiIsImlkIjozLCJpYXQiOjE1Mjg3NzUzOTMsImV4cCI6MTUyODc3ODk5M30.cnWcgJQF1z7adgKp49AgP4UvpqIXUNjGfjWLMq-rMeA"}登录接口/user/login3.4.请求方式post3.5.请求参数参数说明需求username用户名必填password密码必填3.6.返回数据{"code":200,"msg":"登录成功","data":{"id":3,"username":"Bob","token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IkJvYiIsImlkIjozLCJpYXQiOjE1Mjg3NzU0NTIsImV4cCI6MTUyODc3OTA1Mn0.v_B_EXvzYTk7Wz-jl4D8F5n5kn2iah8oht0s6S72Zsc"}}getuserinformation/user3.7.请求方式get3.8.说明token一定要传Authorization:BearereyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IuaigeWHpOazomJvIiwiaWQiOjUsImlhdCI6MTUyNzczNjc2NSwiZXhwIjoxNTI3NzQwMzY1fQ.y5w4lEFRf8bpR4fFPNDms1m9WSX9mfQ3fo5dejG7y3A3.9.返回数据{"code":200,"msg":"查询成功","data":{"id":3,"username":"Bob"}}删除用户界面/user/:id3.10。请求方法delete3.11。请求参数参数说明Requiredid用户ID为必填项3.12.返回数据{"code":200,"msg":"删除用户成功"}4.项目主文件4.1.1schema文件创建数据库表4.2.1modules文件模型层-主要处理参数4.3.1controllers文件controller-处理数据库增删改查4.4.1router文件路由4.5.1app.js入口文件项目身份验证使用jwt,也就是说登录注册和获取用户信息不需要jwt验证,其他接口需要令牌验证。例如注册用户界面:在postman软件操作界面,例如注册界面:post请求http://localhost:3000/api/v1/createUser?username=梁凤波bo&password=bobo12345创建成功后返回信息:{"code":200,"message":"Creationsuccessful","bean":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IuaigeWHpOazomJvIiwiaWQiOjUsImlhdCI6MTUyNzczNjUzMSwiZXhwIjoxNTI3NzQwMTMxfQ.GAQg-hZm3rDYq70-16sgfNHvD64gmrWSFzQCZQs7bl4"}}Registrationpostrequesthttp://localhost:3000/api/v1/user/login?username=梁凤波bo&password=bobo12345successfulreturnmessage:{"message":"Loginsuccessful!","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/]}))loginandregistrationwillreturntokeninformation,exceptforthesetwo个接口必须要发送header头在header中加入tokenAuthorization:BearereyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6IuaigeWHpOazomJvIiwiaWQiOjUsImlhdCI6MTUyNzczNjc2NSwiZXhwIjoxNTI3NzQwMzY1fQ.y5w4lEFRf8bpR4fFPNDms1m9WSX9mfQ3fo5dejG7y3A才能获取到接口信息,而且token有效期是1个小时就失效。Fordetails,youcanlookatthemainfilecodesoftheproject,andlearnandprogresstogether.Ifyouhaveanygoodsuggestionsoropinions,orifyouhaveanymistakes,pleaseguide,pleaseleaveamessage,thankyouforlearningRecommendedlink:koa2realizesjwtcertificationauthor日暮途远_https://www.jianshu.com/p/176198fbdb35UsermanagementdesignbasedonEgg.jsframeworkNode.jsserviceconstructionIfitishelpfulforyoutolearnnodejs,pleasegiveastar??Thankyou