在前端开发过程当中,先后端联调的时候,总会遇到各类问题,今天我简单作一个各个状况的总结,以便记录和分享给你们!
若api接口已经开发完毕,这不存在这个问题,前端直接调接口便可,基本废话😁
咱们都知道,跨域问题是浏览器端和服务器端才会有的,服务端和服务端是不存在跨域问题的。 那么前端在自测时,如何避免跨域呢? 浏览器---》服务器(走到这个服务器的时候,咱们可使用devServer或者nginx处理)---》API
+1)前端能够在vue.config.js配置文件自定义接口,配置devServer(说实话,这个方法须要前端懂点node,也有点费精力)html
const bodyParser = require("body-parser"); module.exports = { devServer: { before: app => { // 设置参数处理中间件 app.use(bodyParser.json()); // post参数 // url参数 app.use( bodyParser.urlencoded({ extended: true, }), ); app.post("/dev-api/user/login", (req, res) => { const { username } = req.body; if (username === "admin" || username === "jerry") { res.json({ code: 1, data: username, }); } else { res.json({ code: 10204, message: "用户名或密码错误", }); } }); app.get("/dev-api/user/info", (req, res) => { // 请求头获取token const auth = req.headers["authorization"]; // 转换为响应的roles const roles = auth.split(" ")[1] === "admin" ? ["admin"] : ["editor"]; res.json({ code: 1, data: roles, }); }); }, } }
+2)先后端代码分离的状况,假如node端写api。须要前端配置一下proxy。前端
1)在项目中建立server目录,建立index.jsvue
const express = require("express"); const app = express(); const bodyParser = require("body-parser"); app.use(bodyParser.json()); app.use( bodyParser.urlencoded({ extended: true }) ); app.post("/user/login", (req, res) => { const { username } = req.body; if (username === "admin" || username === "jerry") { res.json({ code: 1, data: username }); } else { res.json({ code: 10204, message: "用户名或密码错误" }); } }); app.get("/user/info", (req, res) => { const roles = req.headers['authorization'].split(' ')[1] ? ["admin"] : ["editor"]; res.json({ code: 1, data: roles }); }); app.listen(3000);
2)在vue.config.js的devServer中配置代理node
proxy: { // 代理 /dev-api/user/login 到 http://127.0.0.1:3000/user/login [process.env.VUE_APP_BASE_API]: { target: `http://127.0.0.1:3000/`, changeOrigin: true, pathRewrite: {//看后台是否有,决定是否重写 ["^" + process.env.VUE_APP_BASE_API]: "" } } },
3)启动server下的index,监听3000端口,一样能够处理跨域nginx
node index.js
4)启动前端项目git
npm run serve
+3)使用easy-mock模拟github
注意:easy-mock网站常常挂掉,须要咱们本身在本地搭建一下本地项目,详细步骤以下: