账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue-cli 封装post请求
    23
    0
    import axios from 'axios'
    import QS from 'qs';
    import baseURL from './baseUrl'
    
    axios.defaults.timeout = 5000;
    axios.defaults.headers.post['Content-Type'] = 'application/json';
    axios.defaults.headers['ECP-COOKIE'] = window.localStorage.token
    
    // request拦截器
    axios.interceptors.request.use(
      config => {
        // 在发送请求之前做些什么
        console.log('请求前',config)
        return config;
      }, function (error) {
        // 对请求错误做些什么
        return Promise.reject(error);
      });
    
    // respone拦截器
    axios.interceptors.response.use(
      response => {
        // 对响应数据做点什么
        console.log('请求后',response)
        return response;
      }, function (error) {
        // 对响应错误做点什么
        return Promise.reject(error);
      });
    
    export const posta = params =>axios.post('plugins/demo/i',QS.stringify(params)).then(res=>{res.data})
    

    然后再main.js 里
    import { posta } from './api/http'
    Vue.prototype.$post=posta;
    然后再vue文件里使用
    this.$post().then(res=>{console.log(res)})
    也这样写过
    this.$post({}).then(res=>{console.log(res)})
    都是报错undefined

    请求地址没问题 在respone拦截器里数据已经出来了,在vue文件里使用我的封装请求方法就是undefined 这是我哪写错了 求教 谢谢

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 牛顿莱布尼茨公式 普通会员 1楼
      在 Vue.js 中,我们可以使用 axios 库来封装 POST 请求。以下是如何在 vue-cli 项目中封装axios的示例: 首先,你需要安装axios,可以通过npm或yarn进行安装: ```bash npm install axios # 或者 yarn add axios ``` 然后,在项目的src目录下创建一个名为 `api.js` 的文件,用于封装axios请求: ```javascript import axios from 'axios'; const service = axios.create({ baseURL: process.env.VUE_APP_BASE_API, // 这里配置你的API接口基础路径 timeout: 5000 // 请求超时时间 }); // request拦截器 service.interceptors.request.use( config => { // 在发送请求之前做些什么 // 如添加Token到headers if (localStorage.getItem('token')) { config.headers.Authorization = localStorage.getItem('token'); } return config; }, error => { // 对请求错误做些什么 console.log(error); Promise.reject(error); } ); // response拦截器 service.interceptors.response.use( response => { // 对响应数据做点什么 const res = response.data; if (res.code !== 200) { // 如果返回的状态码为200,说明接口请求成功,可以正常拿到数据 // 否则的话抛出错误 return Promise.reject(new Error(res.message || 'Error')); } else { return res.data; } }, error => { console.log('err' + error); // for debug return Promise.reject(error); } ); export default { post(url, data) { return service({ url, method: 'post', data }); } }; ``` 然后在你的组件中使用: ```javascript import api from '@/api.js'; export default { methods: { postData() { api.post('/your-api-url', { key: 'value' }) .then(response => { console.log(response); // 处理成功的回调 }) .catch(error => { console.error(error); // 处理失败的回调 }); } } } ``` 这样就完成了对POST请求的封装。
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部