前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ts 项目基于axios 请求之后自动转model

ts 项目基于axios 请求之后自动转model

作者头像
星宇大前端
发布2020-12-16 15:54:23
2.4K0
发布2020-12-16 15:54:23
举报
文章被收录于专栏:大宇笔记

在移动端和后台进行数据操作的时候,我们往往会将网络请求抽象一个model层,便于维护和开发使用。

前端用TS做项目,抽象model层是非常有必要。

axios-mapper是用来解决这个问题,让请求直接返回model。而且优化请求,防止过快点击重复请求。

功能


  • 更简单的axios请求返回自动转成model
  • 自定义间隔时间,防止重复快速点击

安装


代码语言:javascript
复制
  npm install  axios-mapper

or

代码语言:javascript
复制
  yarn add axios-mapper

简单使用


1、基础配置

代码语言:javascript
复制
 import HttpClient,{HttpClientConfig} from "../src/index";
 const config:HttpClientConfig = {
    baseURL:'http://www.httpbin.org',
    headers:{
        token:'your token'
    }    
 }
const https = new HttpClient(config)
export default https

2 、自动化产生model

vscode extension : json2ts web:http://json2ts.com

代码语言:javascript
复制
// {
//     "slideshow": {
//       "author": "Yours Truly",
//       "date": "date of publication",
//       "slides": [
//         {
//           "title": "Wake up to WonderWidgets!",
//           "type": "all"
//         },
//         {
//           "items": [
//             "Why <em>WonderWidgets</em> are great",
//             "Who <em>buys</em> WonderWidgets"
//           ],
//           "title": "Overview",
//           "type": "all"
//         }
//       ],
//       "title": "Sample Slide Show"
//     }
//   }

export interface Slide {
	title: string;
	type: string;
}

export interface Slideshow {
	author: string;
	date: string;
	slides: Slide[];
	title: string;
}

export interface RootObject {
	slideshow: Slideshow;
}

3、请求时获得转换

代码语言:javascript
复制
import  https  from "./http";
import { RootObject } from "./model";

https.request<RootObject>('/json').then((res)=>{
    console.log(res?.slideshow);
})

全部配置


配置基于AxiosRequestConfig类,扩展新增默认参数和间隔时间

代码语言:javascript
复制
export interface HttpClientConfig extends AxiosRequestConfig {
 //所有请求可以带默认参数
  defaultParams?: RequestParams,
  //click interval (点击间隔时间)
  clickInterval?:number
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/12/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 功能
  • 安装
  • 简单使用
  • 全部配置
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档