帮我写一个fetch请求的二次封装
时间: 2023-06-13 17:02:04 浏览: 95
当然可以,以下是一个基本的 fetch 请求的二次封装的代码示例:
```javascript
const request = async (url, options = {}) => {
try {
const response = await fetch(url, options);
const json = await response.json();
if (response.ok) {
return json;
}
throw new Error(json.message);
} catch (error) {
throw new Error(error.message);
}
};
export default request;
```
这个函数接收一个 URL 和一个 options 对象作为参数,并返回一个 Promise。如果请求成功,返回解析后的 JSON 数据;否则,抛出一个包含错误信息的 Error 对象。
你可以在调用这个函数时,传递一个 URL 和一个 options 对象,例如:
```javascript
import request from './request';
const fetchData = async () => {
try {
const data = await request('https://api.example.com/data');
console.log(data);
} catch (error) {
console.error(error);
}
};
fetchData();
```
以上代码将会使用默认的 GET 方法发送一个请求到 https://api.example.com/data 并且在控制台中输出返回的数据。你还可以传递其他的 options 选项,例如:
```javascript
const options = {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ username: 'example', password: 'password' }),
};
const data = await request('https://api.example.com/login', options);
```
这个请求将使用 POST 方法发送一个 JSON 数据到 https://api.example.com/login。
阅读全文