zoukankan      html  css  js  c++  java
  • vue项目(vue+axios)的一些配置

    axios: 相当于ajax,之前是用vue-resourse,不过现在这个模块不维护了,基本使用axios
    vue-router: 是vue的路由
    vuex: 是vue的状态管理,方便组件间通信

    1、安装:

    npm install axios --save-dev

    2、axios配置如下:

    // 引入axios
    import axios from 'axios'
    
    // 创建axios实例
    const httpService = axios.create({
        baseURL: "http://localhost:8081", // url前缀
        timeout: 3000 // 请求超时时间
    });
    
    // request拦截器
    httpService.interceptors.request.use(
        config => {
            // 根据条件加入token-安全携带
            if (true) { // 需自定义
                // 让每个请求携带token
                config.headers['User-Token'] = '';
            }
            return config;
        }, 
        error => {
            // 请求错误处理
            Promise.reject(error);
        }
    )
    
    // respone拦截器
    httpService.interceptors.response.use(
        response => {
            // 统一处理状态
            const res = response.data;
            if (res.statuscode != 1) { // 需自定义
                // 返回异常
                return Promise.reject({
                    status: res.statuscode,
                    message: res.message
                });
            } else {
                return response.data;
            }
        },
        // 处理处理
        error => {
             if (error && error.response) {
                switch (error.response.status) {
                    case 400:
                        error.message = '错误请求';
                        break;
                    case 401:
                        error.message = '未授权,请重新登录';
                        break;
                    case 403:
                        error.message = '拒绝访问';
                        break;
                    case 404:
                        error.message = '请求错误,未找到该资源';
                        break;
                    case 405:
                        error.message = '请求方法未允许';
                        break;
                    case 408:
                        error.message = '请求超时';
                        break;
                    case 500:
                        error.message = '服务器端出错';
                        break;
                    case 501:
                        error.message = '网络未实现';
                        break;
                    case 502:
                        error.message = '网络错误';
                        break;
                    case 503:
                        error.message = '服务不可用';
                        break;
                    case 504:
                        error.message = '网络超时';
                        break;
                    case 505:
                        error.message = 'http版本不支持该请求';
                        break;
                    default:
                        error.message = `未知错误${error.response.status}`;
                }
            } else {
                error.message = "连接到服务器失败";
            }
            return Promise.reject(error);
        }
    )
    
    /*网络请求部分*/
    
    /*
     *  get请求
     *  url:请求地址
     *  params:参数
     * */
    export function get(url, params = {}) {
        return new Promise((resolve, reject) => {
            httpService({
                url: url,
                method: 'get',
                params: params
            }).then(response => {
                resolve(response);
            }).catch(error => {
                reject(error);
            });
        });
    }
    
    /*
     *  post请求
     *  url:请求地址
     *  params:参数
     * */
    export function post(url, params = {}) {
        return new Promise((resolve, reject) => {
            httpService({
                url: url,
                method: 'post',
                data: params
            }).then(response => {
                resolve(response);
            }).catch(error => {
                reject(error);
            });
        });
    }
    
    /*
     *  文件上传
     *  url:请求地址
     *  params:参数
     * */
    export function fileUpload(url, params = {}) {
        return new Promise((resolve, reject) => {
            httpService({
                url: url,
                method: 'post',
                data: params,
                headers: { 'Content-Type': 'multipart/form-data' }
            }).then(response => {
                resolve(response);
            }).catch(error => {
                reject(error);
            });
        });
    }
    
    export default {
        get,
        post,
        fileUpload
    }

    3、main.js配置:

    import axios from './util/axios'
    
    Vue.prototype.$ajax = axios
    //this.$ajax.post('/login/login', {});

    4、解决vue-cli测试端口随时变化的方式:

    npm install portfinder@1.0.21//在当前机器上查找打开端口的简单工具

    5、打包项目:

    npm run build

    6、nginx前端服务器:
    修改服务器默认端口
    将打包后的项目文件dist目录下的文件放入nginx/html更目录。

    cd D:
    ginx-1.17.3//进入nginx安装目录
    start nginx//启动nginx服务器
    tasklist /fi "imagename eq nginx.exe"//查看nginx任务进程
    
    # 重启Nginx
    nginx -s reload
    # 强制停止nginx服务器,如果有未处理的数据,丢弃
    nginx -s stop
    
    # 优雅的停止nginx服务器,如果有未处理的数据,等待处理完成之后停止
    nginx -s quit
  • 相关阅读:
    让你的App飞一会
    Event in Backbone
    Event in Zepto
    【不怕坑】之 Node.js加密 C#解密
    结对项目:日程管理(四)
    结对项目:日程管理(三)
    结对项目:日程管理(二)
    结对项目:日程管理(一)
    当代大学生的痛点
    软件需求分析
  • 原文地址:https://www.cnblogs.com/art-poet/p/12502113.html
Copyright © 2011-2022 走看看