axios到底哪里好

发布于 2022-09-06 11:37:56 字数 1074 浏览 21 评论 0

最近尝试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, 但是发送过去的数据就是纯字符串了,后端收到还需要转一下才能用,为什么不按照常规的方式来发送数据,就像 jQueryajax 方法一样。
那么问题来了, 我真的有必要为了发送 post 请求而使用兼容并不好的 URLSearchParams 或者为此引入一个 qs 库么?axios 到底有哪里好? 为什么官方的例子却行不通?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

过度放纵 2022-09-13 11:37:56

...。
这里的options应该是跨域(复杂跨域请求)的预先请求,用来确定有没有跨域权限。
你拿jquery.ajax发跨域请求,也会有一个options请求。
vueaxios没有关系。
vueaxios没有关系。
vueaxios没有关系。


qs转参数是因为axios默认支持application/json请求头与json数据格式。
使用其他请求头和form-data的数据格式需要手动设置请求头和qs转换格式。


qs是用来做序列化的,JSON.stringify也是做序列化处理的,但你要知道他们序列化的结果是不一样的。

var a = {b:1,c:2}
qs-->"b=1&c=2"(这个叫query字符串吗)
JSON.stringify: {"b":1,"c":2}(json字符串)
不念旧人 2022-09-13 11:37:56

你如果只是单纯的发送一个post请求,你可以用你觉得怎样方便,怎样写的形式实现。
如果你项目比较大,比较复杂,需要对系统中大多数请求发送前添加heder,对返回结果做统一的报错处理,用axios会比较方便,你觉得难用,仅仅是你目前暂时还不会用而已,而不是它真的难用。
我觉得你需要了解下
application/x-www-form-urlencoded
application/json
text/xml
这几种的区别,以及http请求中Content-Type所代表的含义

假装不在乎 2022-09-13 11:37:56

赞同 @toBeTheLight 说的,有些人答的都是什么鬼,不是没答到点子上就是前端文盲式的乱答,连"Vue请求之前都会发送一次options请求"都出来了。
建议答题前先提高下跨域的姿势水平。

具体可查阅
HTTP访问控制

如若梦似彩虹 2022-09-13 11:37:56

options请求并不任何ajax库(axios 或者 jQuery ajax)发送的,而是浏览器自动发送的。这是一种跨域请求的机制,大多数浏览器都有这个机制。如果你在nodejs里发送POST请求,就不会带有options请求。

爱已欠费 2022-09-13 11:37:56

谢邀!
个人认为有这么几个好处:
1、官方推荐,持续维护。vue-resource已经不再继续更新维护了
2、兼容性也挺好,有插件能往下支持,qs是用来处理数据的,就像原生的JSON.stringify之类的
3、Vue发送请求之前都会发送一次option请求,这个通过之后才会发送真正的请求
4、可以封装请求、配置基本参数,拥有拦截器等等

目前想起来的就这些了,希望能对你有所帮助!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文