axios发送post请求,nodejs无法正常获取

开始的时候这样使用axios,无法在express的req.body中正常获取。
image.png

this.$ajax({
method: 'post',
url: this.server_path+'/user/public/login',
data: {
name: 'wise',
info: 'wronghan'
},
headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
})
.then(function(response) {
console.log(response);
console.log(response.data)
});


使用querystring序列化data以后,可以正常获取:

this.$ajax({
method: 'post',
url: this.server_path+'/user/public/login',
data: querystring.stringify({
name: 'wise',
info: 'wronghan'
}),
headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
})
.then(function(response) {
console.log(response);
console.log(response.data)
});



使用application / x-www-form-urlencoded格式

默认情况下,axios将JavaScript对象序列化为JSON。 要以应用程序/ x-www-form-urlencoded格式发送数据,您可以使用以下选项之一。


浏览器

在浏览器中,您可以使用URLSearchParams API,如下所示:

var params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params);

请注意,所有浏览器都不支持URLSearchParams,但是有一个polyfill可用(确保polyfill全局环境)。


或者,您可以使用qs库对数据进行编码:

var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 });


Node.js

在node.js中,可以使用querystring模块,如下所示:

var querystring = require('querystring');
axios.post('http:/*something.com/', querystring.stringify({ foo: 'bar' });

你也可以使用qs库。


Promise

axios 依赖本机要支持ES6 Promise实现。 如果您的环境不支持ES6 Promises,您可以使用polyfill。

axios包括TypeScript定义。

import axios from 'axios';
axios.get('/user?ID=12345');

axios在很大程度上受到Angular提供的http服务的启发。最终,axios努力提供一个在Angular外使用的独立的http-like服务。


参考:
http://www.jb51.net/article/112304.htm
http://www.jianshu.com/p/8e5fb763c3d7
https://zhuanlan.zhihu.com/p/27498996

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
随机推荐
Node.js net 模块
选择排序
WordPress 按自定义排序的两种方法
Node.js crypto 模块
MySQL的外键总结
WordPress 输入安全
JavaScript 和 CSS 检测横屏适配
JavaScript Date 类型