axios到底哪里好
最近尝试vue, 使用 axios 发送 post 请求 :
axios Example 里面是这样的:
// Performing a POST request
axios.post('/user', {
firstName: 'Fred',
lastName: 'Flintstone'
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
// Send a POST request
axios({
method: 'post',
url: '/user/12345',
data: {
firstName: 'Fred',
lastName: 'Flintstone'
}
});
上面的官方代码我怎么尝试都行不通, 不管怎样, 发送的都不是 post
, 而是 options
。
我在网上查看了一些解决方法,比如说使用兼容度并不怎么好的 URLSearchParams
和 引入 qs
, 或者直接 JSON.stringify
, 但是发送过去的数据就是纯字符串了,后端收到还需要转一下才能用,为什么不按照常规的方式来发送数据,就像 jQuery
的 ajax
方法一样。
那么问题来了, 我真的有必要为了发送 post 请求而使用兼容并不好的 URLSearchParams
或者为此引入一个 qs
库么?axios
到底有哪里好? 为什么官方的例子却行不通?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
...。
这里的
options
应该是跨域(复杂跨域请求)的预先请求,用来确定有没有跨域权限。你拿
jquery.ajax
发跨域请求,也会有一个options
请求。和
vue
,axios
没有关系。和
vue
,axios
没有关系。和
vue
,axios
没有关系。qs转参数是因为axios默认支持
application/json
请求头与json数据格式。使用其他请求头和form-data的数据格式需要手动设置请求头和qs转换格式。
qs是用来做序列化的,JSON.stringify也是做序列化处理的,但你要知道他们序列化的结果是不一样的。
你如果只是单纯的发送一个post请求,你可以用你觉得怎样方便,怎样写的形式实现。
如果你项目比较大,比较复杂,需要对系统中大多数请求发送前添加heder,对返回结果做统一的报错处理,用axios会比较方便,你觉得难用,仅仅是你目前暂时还不会用而已,而不是它真的难用。
我觉得你需要了解下
application/x-www-form-urlencoded
application/json
text/xml
这几种的区别,以及http请求中Content-Type所代表的含义
赞同 @toBeTheLight 说的,有些人答的都是什么鬼,不是没答到点子上就是前端文盲式的乱答,连"Vue请求之前都会发送一次options请求"都出来了。
建议答题前先提高下跨域的姿势水平。
具体可查阅
HTTP访问控制
options请求并不任何ajax库(axios 或者 jQuery ajax)发送的,而是浏览器自动发送的。这是一种跨域请求的机制,大多数浏览器都有这个机制。如果你在nodejs里发送POST请求,就不会带有options请求。
谢邀!
个人认为有这么几个好处:
1、官方推荐,持续维护。
vue-resource
已经不再继续更新维护了2、兼容性也挺好,有插件能往下支持,
qs
是用来处理数据的,就像原生的JSON.stringify
之类的3、
Vue
发送请求之前都会发送一次option
请求,这个通过之后才会发送真正的请求4、可以封装请求、配置基本参数,拥有拦截器等等
目前想起来的就这些了,希望能对你有所帮助!