随着前端技术的迅猛发展,现在的网页越来越复杂,需要大量的数据支持。而获取服务器数据,是大部分网页应用的必要技能。自从 Web 引入 AJAX(Asynchronous JavaScript and XML)技术之后,前端工程师就可以通过 XMLHttpRequest 对象向服务器请求数据,并使用 JavaScript 进行处理。近几年来,fetch 随着其灵活、简单、易于使用的 API,成为越来越多 Web 开发者的首选。在本文中,我将为大家介绍如何利用 Fetch API 获取服务器数据,并对获取到的数据进行处理。
## Fetch API 简介
Fetch API 是一个强大的 Web API,它提供了一组简单、优雅、易使用的接口,用于从网络上获取资源。Fetch API 广泛应用于 Web 开发,它让编写 Web 应用程序变得更加容易和高效,同时也让 Web 应用程序更加出色。Fetch API 的使用过程如下:
![Fetch API 示例](https://s3.amazonaws.com/com.twilio.prod.twilio-docs/original_images/fetch_api_diagram.png)
首先,我们需要通过 `fetch()` 函数建立一个连接并获取数据。这个函数返回一个 Promise,来处理异步与错误。然后,在 Promise 中,我们可以执行一系列的操作,例如处理获取的数据、错误处理等等。
## 模拟一个简单的示例
在本文中,我们将使用 Node.js 构建作为服务端运行的 RESTful API。需要的 Node.js 包有:`express`(用于创建服务器),`cors`(用于处理跨域资源共享),`body-parser`(用于解析请求体),及 `nodemon`(用于自动重启服务器)。安装:
```shell
npm install express cors body-parser nodemon --save-dev
```
在项目的根目录下,创建一个名为 `index.js` 的文件,并输入以下代码:
```javascript
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(cors());
const users = [
{ id: 1, name: "Li Ming", age: 23 },
{ id: 2, name: "Tom", age: 28 },
{ id: 3, name: "Jerry", age: 25 },
{ id: 4, name: "Amy", age: 30 },
];
app.route('/users')
.get((req, res) => {
res.json(users);
})
.post((req, res) => {
const { name, age } = req.body;
const newUser = { id: users.length + 1, name, age };
users.push(newUser);
res.json(newUser);
});
const port = process.env.PORT || 3000;
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
```
上面的代码,创建了一个名为 `users` 的用户数据,然后使用 express 创建了一个 RESTful API,使得我们可以通过 `GET` 和 `POST` 请求获取或创建用户信息。启动服务器:
```shell
nodemon index.js
```
现在,我们的简单 RESTful API 就可以通过地址 `http://localhost:3000/users` 访问。
## Fetch API 示例
在本节中,我们将使用 `fetch()` 函数,获取我们在上一节中为 `users` 创建的 RESTful API 返回的数据。
```javascript
fetch('http://localhost:3000/users')
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
```
上面的代码,我们首先使用 `fetch()` 函数发送一个简单的 GET 请求,然后获取服务器返回的数据。接着,我们使用 `.then()` 方法将获取到的数据从 JSON 格式解析为 JavaScript 对象,最后返回并打印。
使用上面的代码之后,我们将看到在浏览器控制台中打印出类似如下的输出:
```javascript
[
{ id: 1, name: "Li Ming", age: 23 },
{ id: 2, name: "Tom", age: 28 },
{ id: 3, name: "Jerry", age: 25 },
{ id: 4, name: "Amy", age: 30 },
]
```
我们可以看到,已经成功地从服务器获取了用户数据。
## Fetch API POST 请求处理
在本节中,我们将使用 Fetch API 发送 POST 请求来创建一个新的用户。
```javascript
fetch('http://localhost:3000/users', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ name: 'Lucy', age: 27 })
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error(error));
```
上面的代码,在使用 `fetch()` 函数发送 POST 请求时候,我们传递了一个包含了新用户信息 `name` 和 `age` 的 JSON 参数,然后解析返回的数据,并在控制台中打印出来。在打印结束之后,我们就可以在浏览器中刷新 `http://localhost:3000/users` 地址,看到新创建的用户。
## 结论
通过本文的介绍,我们可以看到 Fetch API 的灵活性和简单性,相比 XMLHttpRequest 或其他类似的技术,Fetch API 更加易于使用。我们可以轻松地请求和获取服务器资源,并对其进行解析和处理。最后,它也是未来 Web 技术发展的一个趋势,我们应该密切关注它的发展。