安装依赖npm install axios -S
定义控制器 Controller
class Controller { constructor() { } getList () { } }
定义装饰器
这时候需要使用装饰器工厂
应为装饰器默认会塞入一些参数
定义 descriptor 的类型 通过 descriptor描述符里面的value 把axios的结果返回给当前使用装饰器的函数
const Get = (url: string): MethodDecorator => { return (target, key, descriptor: PropertyDescriptor) => { const fnc = descriptor.value; axios.get(url).then(res => { fnc(res, { status: 200, }) }).catch(e => { fnc(e, { status: 500, }) }) } }
完整代码 接口可以直接用允许跨越的
import axios from 'axios' const Get = (url: string): MethodDecorator => { return (target, key, descriptor: PropertyDescriptor) => { const fnc = descriptor.value; axios.get(url).then(res => { fnc(res, { status: 200, }) }).catch(e => { fnc(e, { status: 500, }) }) } } //定义控制器 class Controller { constructor() { } @Get('https://api.apiopen.top/api/getHaoKanVideo?page=0&size=10') getList (res: any, status: any) { console.log(res.data.result.list, status) } }