# 应用描述语言

# 应用描述语言介绍

  • 应用描述语言可以看作是eggcode项目的dsl(领域特定语言),灵感来源于k8s的声明式描述文件

  • 应用描述语言目前使用YAML格式进行定义描述,字段含义参考了k8s的声明式描述与OpenAPI的字段含义

  • 应用描述语言的目标是通过与写“api文档”类似的方式,来对具体业务进行技术无关的声明式描述

# 应用描述语言字段说明

  • version: 应用描述语言版本号,目前默认值为v1

  • kind: 描述类型,目前暂时包括下面子列表列出的类型,后续会继续添加特殊的API类型,例如grpc或者其它必要的类型, 不同类型的yaml文件在文件系统中有特定的组织结构

    • Project: 项目描述,文件名固定为project.yaml,在/文件路径下

    • Attribute: 属性描述,在/attributes文件路径下

    • Schema: 模式或者模型描述,在/schemas文件路径下

    • Service: 服务描述,文件名固定为service.yaml,在/services/{service_name}文件路径下

    • Method: 方法描述,在/services/{service_name}/methods文件夹下

    • HttpApi: http接口描述,在/api/http文件路径下

  • metadata: 描述元数据,具体类型的元数据字段含义,在下面具体列出

    • Project Project类型元数据字段说明

      • name: 项目名称,例子:mmm-worth

      • description: 项目说明,例子:买买买价值系统

      • version: 项目版本,例子:0.0.1

      • repository: 项目代码仓库,例子:gitlab.fjmaimaimai.com/linmadan/mmm-worth

      • contact: 项目联系人

        • name: 姓名,例子:linmadan

        • email: 邮箱,例子:772181827@qq.com

    • Attribute Attribute类型元数据字段说明

      • name: 属性名称,例子:taskId

      • description: 属性说明,例子:任务ID

      • type: 属性类型,一般为primitive

        • primitive: 原始类型,包括:string,boolean,int,int32,int64,uint,uint32,uint64,float32,float64,datetime,bytes
    • Schema Schema类型元数据字段说明

      • name: 模式名称,例子:task

      • description: 模式说明,例子:任务

      • attributes: 模式属性集合,下列单个属性可以选择只使用ref字段,或者完整的Attribute描述字段

        • ref: 引用属性描述的name字段,例子:taskId

        • name: 属性名称,例子:taskId

        • description: 属性说明,例子:任务ID

        • type: 属性类型,包括primitive,array,schema

        • primitive: 原始类型,包括:string,boolean,int,int32,int64,uint,uint32,uint64,float32,float64,datetime,bytes

        • array: 原始类型数组,或者自定义模式数组,例子:string或者task

        • schema: 自定义模式,Schema描述的name字段,例子:task

        • required: 是否为必须属性,例子:true

    • Service Service类型元数据字段说明

      • name: 服务名称,例子:task

      • description: 服务说明,例子:任务服务

    • Method Method类型元数据字段说明

      • name: 方法名称,例子:releaseTask

      • description: 方法说明,例子:发布任务

      • payload: 方法输入参数属性集合,单个属性可以选择只使用ref字段,或者完整的Attribute描述字段,与上面Schema描述的attributes相同

      • payload: 方法返回结果属性集合,单个属性可以选择只使用ref字段,或者完整的Attribute描述字段,与上面Schema描述的attributes相同

    • HttpApi HttpApi类型元数据字段说明

      • service: 相关服务名称Service描述的name字段,例子:task

      • path: 路径,例子:/tasks

      • endpoints: 端点集合

        • method: 方法名称,Method描述的name字段,例子:releaseTask

        • route: 端点路由,包括:post,put,get,delete

        • post: 例子: /{taskId}/release

        • put: 例子:/{taskId}

        • get: 例子:/{taskId}

        • delete: 例子:/{taskId}

        • params: 额外参数列表,一般只与get方法配合

        • name: 可以取任意名称,例子:offset

最后更新时间: 11/25/2021, 8:09:01 AM