export default class FetchHttp {
/*
* 响应体处理
* text(): 将返回体处理成字符串类型
* json(): 返回结果和 JSON.parse(responseText)一样
* blob(): 返回一个Blob,Blob对象是一个不可更改的类文件的二进制数据
* arrayBuffer()
* formData()
*
* */
/**
* 自定义header
* @returns {Headers}
*/
static getHeader() {
let headers = new Headers();
headers.append("Content-Type", "text/plain");
headers.append("X-My-Custom-Header", "CustomValue");
headers.append("CLOUD_HEADER", "CLOUD_HEADER_VALUE");
headers.set("Content-Type", "application/json");
return headers;
}
/**
* GET 请求
* @param url 请求地址
* @param callback 回调函数
*/
static getRequest = (url) => {
return fetch(url, {
method: "GET",
//默认为omit,忽略的意思,也就是不带cookie;还有两个参数,same-origin,意思就是同源请求带cookie;include,表示无论跨域还是同源请求都会带cookie
credentials: "include",
headers: FetchHttp.getHeader()
}).then(response =>response.json())
.catch(err => console.log("Fetch错误:" + err));
};
/**
* POST请求
* @param url 请求地址
* @param params 请求参数
* @param callback 回调函数
*/
static postRequest = async (url, params) => {
return await fetch(url, {
method: "post",
// 跨域 no-cors, cors, *same-origin
mode: "cors",
body: JSON.stringify(params),
headers: FetchHttp.getHeader()
}).then(response => response.json())
.catch(error => console.error(error));
};
/**
* delete 请求
* @param url
* @param params
* @returns {Promise<any | void>}
*/
static deleteRequest = async (url, params) => {
return await fetch(url, {
method: "delete",
mode: "cors",
body: JSON.stringify(params),
headers: FetchHttp.getHeader()
}).then(response => response.json())
.catch(error => console.error(error));
};
/**
* put 请求
* @param url
* @param params
* @returns {Promise<any | void>}
*/
static putRequest = async (url, params) => {
return await fetch(url, {
method: "put",
mode: "cors",
body: JSON.stringify(params),
headers: FetchHttp.getHeader()
}).then(response => response.json())
.catch(error => console.error(error));
};
}
fetch 请求封装
最新推荐文章于 2025-03-28 00:57:31 发布