PanJiaChen / vue-element-admin

:tada: A magical vue admin https://panjiachen.github.io/vue-element-admin
MIT License
87.99k stars 30.47k forks source link

axios封装后post方法超时,困扰了6小时 #3020

Closed HK2009 closed 4 years ago

HK2009 commented 4 years ago

如题:也有设置了base_url export function updateUser(data) { return request({ url: '/testA/list', method: 'post', data }) } vue.config.js: devServer: { port: port, proxy: { '/dev-api': { target: 'http://127.0.0.1:80', ws: true, logLevel: 'debug', changeOrigin: true, pathRewrite: { '^/dev-api' : '' } } }, before: require('./mock/mock-server.js') },

问题:java后台,只要设置用@RequestBod Map<String,Object> 前端就报超时5000ms那个 但java是用@RequestParam就没问题 总结:请求payload中的参数dev Proxy是不有问题,我其它项目中没问题,postMan调用也正常,困扰了很久了

PanJiaChen commented 4 years ago

https://github.com/PanJiaChen/vue-element-admin/blob/a45e64fcb2f66d4582a41068c3c16b6bae428e08/src/utils/request.js#L10

HK2009 commented 4 years ago

这个口我找到了,并不超时,用postMan的时候秒响应。 问题是:当提交post的data类型参数的时候,一直超时,如果后台java有问题的话,我mpostman不应该可以访问到

PanJiaChen commented 4 years ago

看有没有发送到服务器,之后看一下日志不就知道了。

liyongleihf2006 commented 4 years ago

这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上参数就出现你们上面说的那种情况,解决方案是: 1.将mock\mock-server.js文件下面的

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
  extended: true
}))

注释掉,然后到16行加上

app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({
  extended: true
}), mock.response)

我刚才在另外一个issue中回答了一下,再来这里说一下吧哈 这里希望可以帮助到大家

PanJiaChen commented 4 years ago

@liyongleihf2006 感谢你的回答,欢迎提一个 pull request

liyongleihf2006 commented 4 years ago

@liyongleihf2006 感谢你的回答,欢迎提一个 pull request

好的

mymmoonoa commented 4 years ago

这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上参数就出现你们上面说的那种情况,解决方案是: 1.将mock\mock-server.js文件下面的

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
  extended: true
}))

注释掉,然后到16行加上

app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({
  extended: true
}), mock.response)

我刚才在另外一个issue中回答了一下,再来这里说一下吧哈 这里希望可以帮助到大家

厉害了,帮忙解决了问题

yuanjz commented 4 years ago

这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上参数就出现你们上面说的那种情况,解决方案是: 1.将mock\mock-server.js文件下面的

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
  extended: true
}))

注释掉,然后到16行加上

app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({
  extended: true
}), mock.response)

我刚才在另外一个issue中回答了一下,再来这里说一下吧哈 这里希望可以帮助到大家

大神

Marcabo commented 4 years ago

这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上参数就出现你们上面说的那种情况,解决方案是: 1.将mock\mock-server.js文件下面的

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
  extended: true
}))

注释掉,然后到16行加上

app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({
  extended: true
}), mock.response)

我刚才在另外一个issue中回答了一下,再来这里说一下吧哈 这里希望可以帮助到大家

按照你的方法使用后,出现一个问题.axios跨域请求成功了.但是mockjs 本身的请求出现 404.我将

  app.use(bodyParser.json())
  app.use(bodyParser.urlencoded({
    extended: true
  }))

注释取消后,成功了.

luoruiqing commented 4 years ago

这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上参数就出现你们上面说的那种情况,解决方案是: 1.将mock\mock-server.js文件下面的

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
  extended: true
}))

注释掉,然后到16行加上

app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({
  extended: true
}), mock.response)

我刚才在另外一个issue中回答了一下,再来这里说一下吧哈 这里希望可以帮助到大家

很厉害!

1114023040 commented 4 years ago

这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上参数就出现你们上面说的那种情况,解决方案是: 1.将mock\mock-server.js文件下面的

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
  extended: true
}))

注释掉,然后到16行加上

app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({
  extended: true
}), mock.response)

我刚才在另外一个issue中回答了一下,再来这里说一下吧哈 这里希望可以帮助到大家

大神

这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上参数就出现你们上面说的那种情况,解决方案是: 1.将mock\mock-server.js文件下面的

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
  extended: true
}))

注释掉,然后到16行加上

app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({
  extended: true
}), mock.response)

我刚才在另外一个issue中回答了一下,再来这里说一下吧哈 这里希望可以帮助到大家

帮大忙了,注释之后springboot终于可以获取到Json数据了。 不过proxy的写法仍然有点小疑问,我这里必须写成如下才好用(网上例子都不需要写前面的baseUrl)。

    target: `http://localhost:8080`, 
    changeOrigin: true,
    pathRewrite: {
      ['^' + process.env.VUE_APP_BASE_API+'/MyProfile']: ''
    }
  },
hyn-lei commented 4 years ago

这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上参数就出现你们上面说的那种情况,解决方案是: 1.将mock\mock-server.js文件下面的

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
  extended: true
}))

注释掉,然后到16行加上

app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({
  extended: true
}), mock.response)

我刚才在另外一个issue中回答了一下,再来这里说一下吧哈 这里希望可以帮助到大家

真的非常感谢,我i的表现是PUT POST请求,服务器端读取不到body数据流,真的是浪费了3个多小时的问题排查。

eziozhao commented 4 years ago

这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上参数就出现你们上面说的那种情况,解决方案是: 1.将mock\mock-server.js文件下面的

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
  extended: true
}))

注释掉,然后到16行加上

app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({
  extended: true
}), mock.response)

我刚才在另外一个issue中回答了一下,再来这里说一下吧哈 这里希望可以帮助到大家

感谢!post请求发不出去 查了半天没解决 最后想起来到issues看看,果然有高人!

HammerMax commented 3 years ago

这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上参数就出现你们上面说的那种情况,解决方案是: 1.将mock\mock-server.js文件下面的

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
  extended: true
}))

注释掉,然后到16行加上

app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({
  extended: true
}), mock.response)

我刚才在另外一个issue中回答了一下,再来这里说一下吧哈 这里希望可以帮助到大家

谢大佬

zhouz206 commented 3 years ago

这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上参数就出现你们上面说的那种情况,解决方案是: 1.将mock\mock-server.js文件下面的

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
  extended: true
}))

注释掉,然后到16行加上

app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({
  extended: true
}), mock.response)

我刚才在另外一个issue中回答了一下,再来这里说一下吧哈 这里希望可以帮助到大家

非常感谢,卡了好久

wildcn commented 3 years ago

非常感谢,卡了半天。

jiangfengDestiny commented 3 years ago

厉害了,解决了我的问题。 卡了2天


这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上参数就出现你们上面说的那种情况,解决方案是: 1.将mock\mock-server.js文件下面的

app.use(bodyParser.json()) app.use(bodyParser.urlencoded({ extended: true })) 注释掉,然后到16行加上

app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({ extended: true }), mock.response) 我刚才在另外一个issue中回答了一下,再来这里说一下吧哈 这里希望可以帮助到大家

luocong2016 commented 3 years ago

并没有什么用 image 很明显 直接返回body

lingzhi04 commented 3 years ago

这个问题是因为mock-server中express的中间件body-parser导致的,表现为不带参数请求没有问题,带上参数就出现你们上面说的那种情况,解决方案是: 1.将mock\mock-server.js文件下面的

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({
  extended: true
}))

注释掉,然后到16行加上

app[mock.type](mock.url, bodyParser.json(), bodyParser.urlencoded({
  extended: true
}), mock.response)

我刚才在另外一个issue中回答了一下,再来这里说一下吧哈 这里希望可以帮助到大家

真心感谢大佬!卡了10个小时!折腾各种nginx反向代理都报错,可算是成功取到数据

amewayne commented 2 years ago

感谢。。同踩坑了。。。

0akarma commented 2 years ago

感谢,猜到了是mock-server的问题,但没仔细看

youmikuang commented 2 years ago

大神 膜拜了~

lywlyw1234444 commented 5 months ago

大佬我想问下,配置两个代理之后,前一个代理post带请求体能正常访问,但是第二个就不行了。这种情况该怎么办呢?(mock-server.js那些东西我也改好了)