codestar-http-request-web
v4.2.0
Published
```typescript import type {Result} from 'codestar-base' import HttpRequestWeb from "codestar-http-request-web"; class MyHttp extends HttpRequestWeb{
Readme
web环境http请求类封装
import type {Result} from 'codestar-base'
import HttpRequestWeb from "codestar-http-request-web";
class MyHttp extends HttpRequestWeb{
baseUrl(){
return "https://my.domain/api"
}
protected defaultTimeout(): number {
return 10_000;
}
protected defaultHeaders(): { [p: string]: string } {
return {
"content-type": "application/json",
"token": "***"
};
}
showError(ret: Result<any>): void {
// 如何显示错误消息
window.alert(ret.msg)
}
}
const myHttp = new MyHttp()
// 对于一些全局错误统一处理,这样就不必每次请求都要单独处理全局错误了
myHttp.addGlobalErrorHandle(['401','account-session-dropped'],(ret: Result<unknown>)=>{
// 未登录,或者登录失效
// 统一处理需要登录的情况,比如跳转到登录页面 或者弹出登录框
})
myHttp.addGlobalErrorHandle('subscription-expired',(ret: Result<unknown>)=>{
// 订阅过期,需要重新续费,这里增加一个全局处理逻辑,比如弹出续费提示框。
})
// 发起GET请求
let locking = true
myHttp.get({
url:'/query.do',
query:{name:'amy'},
success:(ret:Result<string>)=>{
console.log('查询成功')
},
always:()=>{
locking = false
}
})
// 如果出现非GlobalError,会调用showError(ret: Result<any>): void {}
// 如果你想单独处理这个请求的错误
myHttp.get({
url:'/query.do',
query:{name:'amy'},
success:(ret:Result<string>)=>{
console.log('查询成功')
},
hideGlobalError:true,// true表示全局错误不执行fail回调,默认false
fail:(ret:Result<any>)=>{
// 如果传入了fail处理回调。如果请求失败,将不会调用HttpRequestWeb里面定义的showError方法
},
always:()=>{
locking = false
}
})
// 发送post请求
myHttp.post(
{
url:'/save.do',
data:{...},
success:(ret:Result<T>)=>{
// 提交成功
}
}
)
// Promise风格
const ret:Result<T> = await myHttp.send('GET', {url:'',query:{...}})