tool里面封装
//拦截器
class MyIntercept implements rcp.Interceptor {
intercept(context: rcp.RequestContext, next: rcp.RequestHandler): Promise<rcp.Response> {
// throw new Error('Method not implemented.')
context.request.headers!['token'] = PreferenceStorage.get("token") // 请求头中的token
const promise=next.handle(context)
promise.catch((err:Error)=>{
console.log(err.message)
})
return promise// 返回结果
}
}
export class HttpRequest{
private session:rcp.Session
constructor() {
this.session=rcp.createSession({
baseAddress:baseUrl,
interceptors: [new MyIntercept()],
requestConfiguration:{
transfer:{
timeout:{
connectMs: 5000, // 连接时间
transferMs: 5000 // 传输时间
}
}
},
// headers:{
// "token": PreferenceStorage.get("token"),
// }
})
}
get(url:string){
return this.session.get(url).then(res => {
if(res.statusCode==401){
promptAction.showToast({
message:"请先登录"
})
return null
}
return res.toJSON()
})
}
post(url:string,data:object){
return this.session.post(url,data).then(res=>{
if(res.statusCode==401){
promptAction.showToast({
message:"请先登录"
})
return null
}
return res.toJSON()
})
}
}
第二次封装
import {HttpRequest,baseUrl,dalImg} from '../utils/tool'
import { BannerModel,ProductModel,GoodModel,GoodPageModel, userinfoModel,responseinfoModel} from '../model/shop_interface'
import { data } from '@kit.TelephonyKit'
export class Shopapi{
private httpRequest:HttpRequest
constructor() {
this.httpRequest=new HttpRequest()
}
// 轮播图请求
loadBanners():Promise<BannerModel[]>{
return this.httpRequest.get("/api/v1/banners").then((res)=>{
console.log(JSON.stringify(res))
return (res!["data"] as BannerModel[]).map((item:BannerModel)=>{
return {
id:item.id,
name:item.name,
coverImage:dalImg(item.coverImage)
} as BannerModel
})
})
}
// 商品种类的请求
loadProductCartory():Promise<ProductModel[]>{
return this.httpRequest.get("/api/v1/product_categories").then((res)=>{
return (res!["data"] as ProductModel[]).map((item:ProductModel)=>{
return {
id:item.id,
name:item.name,
coverImage:dalImg(item.coverImage)
} as ProductModel
})
})
}
// 商品列表的请求
loadProducts(page=1,category:string):Promise<GoodPageModel>{
return this.httpRequest.get(`/api/v1/products?page=${page}&category=${category}`).then((res)=>{
return res as GoodPageModel
})
}
// 产品详情的接口
loadProductById(id:string){
return this.httpRequest.get(`/api/v1/products/${id}`).then(res=>{
return res!["data"] as GoodModel
})
}
// 登录请求
Userlogin(data:userinfoModel){
return this.httpRequest.post('/api/v1/auth/login',data).then(res=>{
return res as responseinfoModel<string>
})
}
// 注册请求
UserReg(data:userinfoModel){
return this.httpRequest.post('/api/v1/auth/reg',data).then(res=>{
return res as responseinfoModel<string>
})
}
getinfo(){
return this.httpRequest.get('/api/v1/user/info').then(res=>{
return res!["data"] as userinfoModel
})
}
}