hi ARAM

关于在前端发起HTTP请求的思考

2023/02/04

现在的前端开发完全离不开AJAX,一个正儿八经的项目日积月累,会有非常多的接口,但是对这些接口的管理,一直没有非常好的范式。

常见的一般是一个请求一个方法,每个方法再调用包装好的HTTP工具方法:

export const getList = (...) => {
  return http.get('...');
};

然后在该方法里写好接口、处理好参数。

但是感觉这里的写法还是太啰嗦了,不够声明式

在19年的时候,有幸在公司里搭建了第一个项目,其中在提供HTTP能力的时候,就思考了这个问题。

那段时间一个是毕设要开始答辩了,另一个点就是刚好在接触flask

总的来说,就是因为毕设的后端实现和flask,受到了启发。

当时毕设是用Koa2实现了一套基于装饰器描述的控制器,其实是模拟了flask或者JAVA中的注解。

既然后端可以用装饰器这样很精简明确的描述一个请求,并处理,那是不是在前端也可以。

后来就动手实现,有了现在的booze

其实就是通过装饰器来描述一个请求:

import { Prefix, Get } from 'booze';

@Prefix('https://a.b.c')
class Order {
  @Get('/getList')
  public getList() {
    return {};
  }
}

const order = new Order();

order.getList()

这样就管理起来了所有请求,并且描述能力更强,更精准。

booze的前身是dequester,这个是2020年创建的项目,将我在公司项目里实现的内容抽象出来实现,发布到了NPM上。

但是那时候工程能力以及组织能力必须现在都差一些,所以很多地方其实实现的不太好,包括对各个框架的支持等等,都没有太完善,所以前段时间就重启了项目。

目前夹带私货,用在了公司好几个项目里,驱动的还是比较好的,如果可以,希望未来这个想法可以成为前端描述、管理HTTP请求的一种解决方案之一。


上一篇:如何在SSR项目中减少访问window的心智负担
下一篇:奇奇怪怪的东西又来了