如何使用 JavaScript Fetch API 获取数据?

什么是 Fetch API

Fetch API 是基于 Promise(承诺)的 API,使得 web 开发者能够轻松地进行异步数据请求和响应处理,实现数据的异步传输。Fetch API 并没有被所有浏览器完全支持。

如何使用 Fetch API 获取数据

要使用 Fetch API,我们需要使用 fetch() 方法,它是全局的方法。fetch() 方法的返回值是一个 Promise 对象,其中包含响应所代表的 Response 对象。

示例代码

fetch('https://jsonplaceholder.typicode.com/posts/1')

.then(response => response.json())

.then(data => console.log(data))

.catch(error => console.error(error));

上面的代码用于获取 JSONPlace Holder API 的第一篇帖子。在这个示例中,我们没有指定任何参数,因为我们只需要使用默认参数。

fetch() 方法的第一个参数是需要请求的 URL,fetch() 方法还可以使用第二个参数进行配置。我们可以使用不同的参数进行配置,如方法、头信息、模式等。

fetch() 方法有五个主要的配置选项:

method:请求的 HTTP 方法,如 GET、POST、PUT 等

headers:请求头,表示请求携带的额外信息,如 token、编码头等以键值对的形式保存

body:请求体,比如一些参数或者表单数据(参数根据 API 的要求定制)

mode:请求的模式,如 CORs、No CORs、same-origin 等

cache:请求携带的缓存,如 no-cache、no-store、force-cache 等

这些选项是可以按需设置的。比如,下面的代码使用 POST 方法上传数据:

示例代码

const data = { name: 'helloworld' };

fetch('https://api.com/posts', {

method: 'POST', // 请求方法

headers: {

'Content-Type': 'application/json' // 请求头

},

body: JSON.stringify(data) // 请求体

})

.then(response => response.json())

.then(data => console.log(data))

.catch(error => console.error(error));

上面的代码将使用 POST 方法向 API 发送一个新的帖子。我们将 name 字段的值设置为 helloworld,并使用 JSON.stringify() 将数据串行化为字符串。

如何处理 API 的响应

在使用 fetch() 方法后,我们通常需要处理 API 的响应。响应对象(Response)包含一组方法,以对响应进行处理。

下面是一些常用的响应对象方法:

response.text():将响应转换成纯文本格式并返回一个 Promise 对象

response.json():将响应转换成 JSON 格式并返回一个 Promise 对象

response.arrayBuffer():将响应转换成 ArrayBuffer 格式并返回一个 Promise 对象

response.blob():将响应转换成 Blob 对象并返回一个 Promise 对象

response.formData():将响应转换成 FormData 对象并返回一个 Promise 对象

response.clone():对响应进行克隆,并返回克隆结果

response.ok:返回一个布尔值,表示响应是否成功,比如等于 200 或者 300 等

response.status:返回一个数字,表示响应的状态码。如 200 表示成功,404 表示找不到资源

response.statusText:返回一个字符串,表示响应的文字状态。比如 OK、NOT FOUND 等

response.headers.get('header-name'):返回指定响应头的值,比如内容类型

下面的代码是获取响应并将其转换成纯文本格式的示例:

示例代码

fetch('https://jsonplaceholder.typicode.com/posts/1')

.then(response => response.text())

.then(data => console.log(data))

.catch(error => console.error(error));

响应的类别和格式取决于 API,应该使用不同的方法来处理它们。如果使用 text() 处理 JSON 格式的响应,将会抛出错误。

如果您在使用 API 响应时遇到问题,最好检查浏览器的开发人员工具中的控制台,以获取更详细的错误信息。

结论

到目前为止,我们已经说明了如何使用 fetch() 方法获取数据,并对常用的响应对象方法进行了简述。使用 Fetch API,web 开发人员可以像使用 XMLHTTP 等传统方法一样获取异步数据,同时还可以更加便捷地处理响应对象。Fetch API 还提供了一组可配置的参数,以及一组强大的响应方法,有助于帮助开发人员更快、更高效地创建 Web 应用程序。