rcp接口封装二次封装

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
    })
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值