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

声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。
真诚赞赏,手留余香
赞赏
随机推荐
Wordpress 使用 tag 标签获取文章列表的方法
WordPress 主题激活和取消激活钩子
Node.js 实现 RBAC 权限模型
WordPress 一键从HTTP转换到HTTPS
WordPress 分页
Node.js MySQL 连接池和事务
冒泡法排序
JavaScript 原生拖放