17-vue零基础到实战-注册和登录页面「渡一教育」( 四 )

代码最后暴露了四个请求方法 , 分别对应注册(register)、登录(login)、获取(user)、删除(delUser)用户 , 并且都在/api下面 , 四个请求接口分别是:
http://localhost:8080/api/login
http://localhost:8080/api/register
http://localhost:8080/api/user
http://localhost:8080/api/delUser
后面我们再利用这四个方法写相对应的后台接口 。
服务端 server
注意
文章从这里开始进入服务端 , 由于服务端需要和数据库、http安全通讯(jwt)共同搭建 , 因此请结合本节和下面的数据库、jwt章节阅读 。
koa2可以使用可以使用async/await语法 , 免除重复繁琐的回调函数嵌套 , 并使用ctx来访问Context对象 。
现在我们用koa2写项目的API服务接口 。
安装
$ cnpm i koa$ cnpm i koa-router -S //koa路由中间件$ cnpm i koa-bodyparser -S //处理post请求 , 并把koa2上下文的表单数据解析到ctx.request.body中引入
const Koa = require('koa');
在项目根目录下面新建server.js , 作为整个server端的启动入口 。
//server.jsconst Koa = require('koa');const app = new Koa();//routerconst Router = require('koa-router');//父路由const router = new Router();//bodyparser:该中间件用于post请求的数据const bodyParser = require('koa-bodyparser');app.use(bodyParser());//引入数据库操作方法const UserController = require('./server/controller/user.js');//checkToken作为中间件存在const checkToken = require('./server/token/checkToken.js');//登录const loginRouter = new Router();loginRouter.post('/login', UserController.Login);//注册const registerRouter = new Router();registerRouter.post('/register', UserController.Reg);//获取所有用户const userRouter = new Router();userRouter.get('/user', checkToken, UserController.GetAllUsers);//删除某个用户const delUserRouter = new Router();delUserRouter.post('/delUser', checkToken, UserController.DelUser);//装载上面四个子路由router.use('/api',loginRouter.routes(),loginRouter.allowedMethods());router.use('/api',registerRouter.routes(),registerRouter.allowedMethods());router.use('/api',userRouter.routes(),userRouter.allowedMethods());router.use('/api',delUserRouter.routes(),delUserRouter.allowedMethods());//加载路由中间件app.use(router.routes()).use(router.allowedMethods());app.listen(8888, () => { console.log('The server is running at http://localhost:' + 8888);});代码里可以看到 , 获取用户和删除用户都需要验证token(详见下文jwt章节) , 并且我们把四个接口挂在到了/api上 , 和前面axios的请求路径一致 。
接口地址配置
另外由于我们的项目启动端口是8080 , koa接口监听的端口是8888 , 于是需要在config/index.js文件里面 , 在dev配置里加上:
proxyTable: { '/api': { target: 'http://localhost:8888', changeOrigin: true }},jsonwebtoken(JWT)JWT能够在HTTP通信过程中 , 帮助我们进行身份认证 。
具体API详见: https://segmentfault.com/a/1190000009494020
Json Web Token是怎么工作的?
1、客户端通过用户名和密码登录服务器;
2、服务端对客户端身份进行验证;
3、服务端对该用户生成Token , 返回给客户端;
4、客户端将Token保存到本地浏览器 , 一般保存到cookie(本文是用sessionStorage , 看情况而定)中;
5、客户端发起请求 , 需要携带该Token;
6、服务端收到请求后 , 首先验证Token , 之后返回数据 。服务端不需要保存Token , 只需要对Token中携带的信息进行验证即可 。无论客户端访问后台的哪台服务器 , 只要可以通过用户信息的验证即可 。