Axios和Fetch有什么区别?

我通过使用fetch调用Web服务,但是我可以在axios的帮助下进行相同的操作。所以现在我很困惑。我应该选择axios还是fetch?

Tom凯2020/03/11 14:47:09

axios的优点:

  • 变形器:允许在发出请求之前或接收到响应之后对数据执行转换
  • 拦截器:允许您完全更改请求或响应(以及标题)。在发出请求或解决Promise之前也执行异步操作
  • 内置XSRF保护

优势axios超过fetch

Gil乐2020/03/11 14:47:09

提取API和axios API之间的另一大区别

  • 使用Service Worker时,在要拦截HTTP请求时才必须使用访存API。
  • 例如 使用Service Worker在PWA中执行缓存时,如果使用的是axios API,则将无法缓存(仅适用于访存API)
Harry小宇宙2020/03/11 14:47:09

另外...我在测试中正在使用各种库,并注意到它们对4xx请求的不同处理。在这种情况下,我的测试将返回一个响应为400的json对象。这是3个流行的lib处理响应的方式:

// request-promise-native
const body = request({ url: url, json: true })
const res = await t.throws(body);
console.log(res.error)


// node-fetch
const body = await fetch(url)
console.log(await body.json())


// Axios
const body = axios.get(url)
const res = await t.throws(body);
console.log(res.response.data)

有趣的是,request-promise-nativeaxiosnode-fetch没有响应时引发4xx响应fetch对JSON解析使用了Promise。

西门泡芙Jim2020/03/11 14:47:09

Axios是一个独立的第三方软件包,可以使用NPM轻松安装到React项目中。

您提到的另一个选项是访存功能。与Axios不同,fetch()它内置于大多数现代浏览器中。借助fetch,您无需安装第三方软件包。

因此,由您自己决定,fetch()如果您不知道自己在做什么,则可以继续使用,并可能将其弄乱,或者只是使用Axios,我认为这更简单。

さ恋旧る2020/03/11 14:47:09

根据GitHub上的mzabriskie

总体而言,它们非常相似。axios的一些优点:

  • 变形器:允许在发出请求之前或接收到响应之后对数据执行转换

  • 拦截器:允许您完全更改请求或响应(以及标题)。另外,在发出请求或Promise解决之前执行异步操作

  • 内置XSRF保护

请检查浏览器支持Axios

在此处输入图片说明

我认为您应该使用axios。

做个有心人2020/03/11 14:47:08

They are HTTP request libraries...

I end up with the same doubt but the table in this post makes me go with isomorphic-fetch. Which is fetch but works with NodeJS.

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


The link above is dead The same table is here: https://www.javascriptstuff.com/ajax-libraries/

Or here: 在此处输入图片说明