axios 配置代理后。只能发送get请求。设置method为post后。还是会变成get

axios 配置代理后。只能发送get请求。设置method为post后。还是会变成get

clipboard.png

clipboard.png
clipboard.png

回答:

我怎么觉得你配错了啊,我发一段我配的

'/emsApi': {
    target: 'http://10.10.11.65/:8094/api',
    changeOrigin: true,
    pathRewrite: {
      '^/emsApi': '/'
    }
  },

假如我请求login,然后我请求的url就是’/emsApi/login’,实际请求的地址是’http://10.10.11.65/:8094/api/login’

回答:

看官方文档的创建实例
一般都不会在创建实例的时候直接配置请求方式,要配置请求方式,可以看看下面的列子(包含get和post)

import axios from 'axios'
import { Message } from 'element-ui'

const env = process.env.NODE_ENV
const ajaxUrl = env === 'production' ? 'https://www.example.com' : '/apis';

const instance = axios.create({
  baseURL: ajaxUrl,
  timeout: 30000,
  withCredentials: true
})

instance.interceptors.response.use(res => {
  const data = res.data || {}
  if (data.status === 1) {
    return data || {}
  } else if (data.status === 0) {
    Message.info({
      message: data.alert
    })
    return Promise.reject(data)
  } else {
    if (data.alert || '') {
      Message.error({
        message: data.alert || ''
      })
    }
    return Promise.reject(data)
  }
}, err => {
  if (err.response) {
    const response = err.response || {}
    const data = response.data || {}
    if (data.status === 404) {
      Message.error({
        message: '404错误,后台没找到'
      })
      return Promise.reject(data)
    } else {
      return Promise.reject(data)
    }
  } else {
    Message.error({
      message: '网络有点卡,请稍后重试'
    })
    return Promise.reject(err)
  }
})

const postRequest = (url, params = {}) => {
  return instance({
    method: 'post',
    url,
    data: params,
    transformRequest: [function (data) {
      let ret = ''
      for (const item in data) {
        ret += encodeURIComponent(item) + '=' + encodeURIComponent(data[item]) + '&'
      }
      ret = ret.slice(0, -1)
      return ret
    }],
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    }
  })
}
const getRequest = (url, params = {}) => {
  return instance({
    url,
    params: params,
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
    }
  })
}

const AXIOS = {
  post: postRequest,
  get: getRequest
}

export default AXIOS

下面是代理的配置

proxyTable: {
    '/apis': {    // 将www.exaple.com印射为/apis
        target: 'http://www.exaple.com',  // 接口域名
        secure: false,  // 如果是https接口,需要配置这个参数
        changeOrigin: true,  // 是否跨域
        pathRewrite: {
            '^/apis': ''      // 需要rewrite的,
        }
   }
},

使用如下:

AXIOS.get('/user/del', {
    id: id
}).then(res => {
    if (res.status == 1) {
        return Promise.resolve()
    }
}).catch(err => {
    return Promise.reject()
})

回答:

一般是这样使用axios的吧,而不是在create的时候设置method。

// 发送 POST 请求
axios({
  method: 'post',
  url: '/user/12345',
  data: {
    firstName: 'Fred',
    lastName: 'Flintstone'
  }
});

回答:

这个跟 proxy 没关系。使用 axios 方式错误:

// 发送 POST 请求
axios({
  method: 'post',
  url: '/user/12345',
  data: {
    firstName: 'Fred',
    lastName: 'Flintstone'
  }
});

暂无评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注