我使用Fetch调用web服务,但我可以在Axios的帮助下做同样的事情。现在我很困惑。我应该选择Axios还是Fetch?


当前回答

它们是HTTP请求库…

我最终也产生了同样的怀疑,但这篇文章中的表格让我选择了同构取回。它是fetch,但适用于NodeJS。

http://andrewhfarmer.com/ajax-libraries/


上面的链接失效了 同样的表格在这里:https://www.javascriptstuff.com/ajax-libraries/

或者在这里:

其他回答

它们是HTTP请求库…

我最终也产生了同样的怀疑,但这篇文章中的表格让我选择了同构取回。它是fetch,但适用于NodeJS。

http://andrewhfarmer.com/ajax-libraries/


上面的链接失效了 同样的表格在这里:https://www.javascriptstuff.com/ajax-libraries/

或者在这里:

对于fetch,我们需要处理两个承诺。使用axios,我们可以直接访问响应对象数据属性中的JSON结果。

Fetch API, need to deal with two promises to get the response data in JSON Object property. While axios result into JSON object. Also error handling is different in fetch, as it does not handle server side error in the catch block, the Promise returned from fetch() won’t reject on HTTP error status even if the response is an HTTP 404 or 500. Instead, it will resolve normally (with ok status set to false), and it will only reject on network failure or if anything prevented the request from completing. While in axios you can catch all error in catch block.

我会说更好的使用axios,直接处理拦截器,头配置,设置cookie和错误处理。

请参考这个

一份工作,我做了很多似乎,这是通过ajax发送表单,通常包括一个附件和几个输入字段。在更经典的工作流程(HTML/PHP/JQuery)中,我在客户端和服务器端使用了$.ajax(),并获得了完全的成功。

我已经使用axios dart/flutter,但现在我正在学习react来构建我的网站,JQuery没有意义。

问题是axios在另一方面给了我一些头疼的PHP,当张贴正常的输入字段和上传文件在同一形式。我尝试了$_POST和file_get_contents(“php://input”)在php中,从axios与FormData或使用json构造发送,但我永远无法同时获得文件上传和输入字段。

另一方面,我成功地使用了下面的代码:

var formid = e.target.id;

// populate FormData
var fd    = buildFormData(formid);       

// post to remote
fetch('apiurl.php', {
  method: 'POST',
  body: fd,
  headers: 
  {
     'Authorization' : 'auth',
     "X-Requested-With" : "XMLHttpRequest"
  }
})    

在PHP方面,我能够通过$_FILES检索上传,并通过$_POST处理其他字段数据:

  $posts = [];
  foreach ($_POST as $post) {
      $posts[] =  json_decode($post);
  }

根据mzabriskie在GitHub上的说法:

总的来说,它们非常相似。axios的一些好处: 变形:允许在发出请求之前或在接收到响应之后对数据进行转换 拦截器:允许您完全更改请求或响应(包括头)。另外,在请求被发送之前执行异步操作 在承诺解决之前 内置XSRF保护

请检查浏览器支持Axios

我认为您应该使用axios。