@coderlzw/test-pack
v1.0.10000002
Published
A simple request library that only supports browsers and encapsulates fetch and axios
Downloads
8
Readme
FetchRequest 使用说明
import {FetchRequest} from "@coderlzw/request"
const myRequest = new FetchRequest({
baseURL: '/api',
timeout: 5000, // 超时的请求会被取消
interceptors: {
requestInterceptor: (request) => {
// 01、return Promise.reject("不允许请求,请求不会被发送,会进入requestInterceptorCatch");
// 02、throw new Error("不允许请求,请求不会被发送,会进入requestInterceptorCatch");
// 03、return request; 这里只能返回request对象,不能返回其他类型
// 04、默认就是返回request对象
},
requestInterceptorCatch: (requestCatch) => {
// 01、throw new Error(requestCatch.message);
// 02、return Promise.reject(requestCatch.message);
// 03、不允许返回其他类型、默认是 throw new Error(error.message);
},
responseInterceptor: (response) => {
// 自由发挥、默认返回 response
},
responseInterceptorCatch: (responseCatch) => {
// 01、throw new Error(responseCatch.error.message );
// 02、return Promise.reject(responseCatch.error.message);
// 03、默认 throw new Error(responseCatch.error.message)
}
},
});
export default myRequest;
interface ResponseData<T = any> {
code: number;
data: T;
message: string;
}
interface RequestParams {
id: number;
}
interface RequestBody {
name: string;
age: number;
}
myRequest.get<ResponseData, RequestParams>('/posts', {params: {id: 1}}).then((res) => {
console.log(res);
}).catch((err) => {
console.log(err);
});
myRequest.post<ResponseData, RequestBody, RequestParams>('/user', {
params: {id: 1},
body: {
name: "zs",
age: 20
}
}).then((res) => {
console.log(res);
}).catch((err) => {
console.log(err);
});
myRequest.fetch<ResponseData,RequestParams, RequestBody>("/posts111?id=1", {
method: "POST",
params: {
name: "zhangsan"
},
body: {
name: "zhangsan"
}
}).then((res) => {
console.log(res);
}).catch((err) => {
console.log("FETCH_ERROR=============:", err);
});