bff-doc-generator

bff文档生成器


Keywords
bff, nodejs, routing-controllers, typescript
License
MIT
Install
npm install bff-doc-generator@1.0.0

Documentation

bff-doc-generator

bff文档生成器

why

目前就职的公司需要前端用 node + tsbff 层,主要是配合 routing-controllers 这个库来书写 controller 层,但是随着 controller 聚合的 api 增多,查询起来比较困难。 从前端页面要查看一个接口的请求参数的过程:network查看请求 -> 根据对应的api查到controller -> 根据具体的api路径查到某个controller下的某个方法 -> 查看请求参数

整个过程较为复杂,并且翻看代码成本较高,没有一个页面化的工具查看,所以就写了这么一个脚本解决这个痛点。

Usage

代码示例如下:

  @JsonController('/v1/user')
  @UseBefore(AuthoMiddleware(authoMiddlewareConfigs))
  export default class UserController {
    @Inject() private userService: userService;


    /**
     * @description 登录获取userid corpid
     * @name login
     * @param metadata metadat awowo dsads
     * @param code hahad ss
     */
    @Post('/login')
    async login(
      @UseMetaData() metadata: MetaData,
      @HeaderParam("mini-app-id") miniAppId: string,
      @Ctx() ctx: Context,
      @BodyParam('code',{required:true}) code: string,
      @BodyParam('grant_type',{required:true}) grantType:string,
    ):Promise<AnyResponse> {
      return this.userService.CodeToUserIdAndCorpid({
        grantType, miniAppId, code, ctx
      })
    }
  }

生成的 json 文件格式如下:

{
 "controllerName": "usercontroller",
 "apiPrefix": "/v1/user",
 "apis": [
  {
   "name": "login",
   "route": "/login",
   "description": " 登录获取userid corpid",
   "ajaxMethod": "Post",
   "params": [
    {
     "name": "metadata",
     "type": "MetaData",
     "description": "metadat awowo dsads",
     "isRequired": false
    },
    {
     "name": "miniAppId",
     "type": "TSStringKeyword",
     "description": "",
     "isRequired": false
    },
    {
     "name": "ctx",
     "type": "Context",
     "description": "",
     "isRequired": false
    },
    {
     "name": "code",
     "type": "TSStringKeyword",
     "description": "hahad ss",
     "isRequired": false
    },
    {
     "name": "grantType",
     "type": "TSStringKeyword",
     "description": "",
     "isRequired": false
    }
   ]
  }
 ]
}