开始的时候这样使用axios,无法在express的req.body中正常获取。
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
声明:本站所有文章和图片,如无特殊说明,均为原创发布。商业转载请联系作者获得授权,非商业转载请注明出处。