niuhe IDL 语言关键字

应用相关

语法: #app=demo

关键字说明
app通过 #app=demo 给应用命名

文件相关

语法: include('api_user.niuhe')

关键字说明
include通过 include 引入定义的其他文件

常量组 ConstGroup 相关

语法: class Lang(ConstGroup[,desc='', depr=True,ver='1.1'])

关键字说明关键字说明
class常量组开始标记ConstGroup将结构标记为常量组
desc常量组描述depr常量组标记为废弃
deprecated同 depr 将常量组标记为废弃ver声明版本

常量相关

语法 ZH_CN=Item(1, "中文")ZH_CN=Item(value=1, desc="中文", depr=True, ver='1.1')

关键字说明关键字说明
Item常量标记ConstGroup将结构标记为常量组
value指定常量的值desc常量组描述
depr常量组标记为废弃deprecateddepr 将常量组标记为废弃
ver声明版本name未定义常量名时重命名

类相关

语法: class User([desc='用户', depr=True, ver='1.1', used=True]):

关键字说明关键字说明
class类开始标记Message将结构标记为类,可不写
desc常量组描述, 也可写为下一行的注释depr常量组标记为废弃
deprecateddepr 将常量组标记为废弃ver声明版本
used将类标记为已被引用,确保在代码中会生成本类相关代码

类字段相关

语法: name=label.type(attrs) 例子: avatar = optional.String(desc='头像', depr=True, ver='1.1')

类字段 label 部分

关键字说明关键字说明
required作为请求参数时本参数必填optional作为请求结构时本参数可选
repeated表示生成的成员为数组mapping表示生成的成员为 map 形式, 内部可填充任意值

类字段 type 部分

关键字说明关键字说明
Integer字段类型为 intLong字段类型为 int64
Float字段类型为 float64Decimal字段类型为 float64
String字段类型为 stringBoolean字段类型为 boolean
Enum字段类型为整数常量StringEnum字段类型为字符串常量
Message字段类型为类File字段类型文件, 读取 header 中对应的文件
Any字段类型map[string]any

类字段 attrs 部分

关键字说明关键字说明
desc字段描述depr常量组标记为废弃
deprecateddepr 将常量组标记为废弃ver声明版本
json重命令json 名omit值为空序列化时丢弃本字段
demo字段示例值cls类型为Message时指定具体的类
group类型为 Enum/StringEnum 时指定常量组枚举regtypeString 时验证其正则表达式
minlentypeString 时验证其最小长度maxlentypeString 时验证其最小长度
minnumtype 数字时验证其最小值maxnumtype 数字时验证其最大值
format指定其对应结构的 Parse方法格式,如 format="2006-01-02"

attrsreg, minlen, maxlen, minnum, maxnum 的属性请参考 zpform struct 定义

路由相关

示例

with services():
    GET('某天数据', '/api/stat/day/',StatDayReq, StatDayRsp, author='xxx', status=tested)
    RPC('统计充值情况', get='/api/stat/charge/',author='xxx', status=tested).args(
        team_id = optional.Long(desc='id'),
    ).returns(
        total = required.Message(cls=StatChargeItem, desc='总充值数据'),
    ).codes(
        comm.LangEnum.ZH_CN, Item(100, '权限错误'),Item(101),
    )
关键字说明关键字说明
with路由开始标记services路由开始标记
POSThttp 请求为 POSTGEThttp 请求为GET
PUThttp 请求为PUTPATCHhttp 请求为PATCH
DELETEhttp 请求为DELETEHEADhttp 请求为HEAD
OPTIONShttp 请求为OPTIONSRPCRPC 方式定义路由
author指定接口责任人/作者status指定接口状态

RPC 定义相关

关键字说明关键字说明
url指定方法为GETPOSTargs定义请求参数
returns定义返回参数codes定义约束错误码集合

XORM 代码生成相关

代码示例

class Config(alias="系统配置", mode='api', niuhe=True, dao=True, service=True, model=True, vite=True):
    '''系统配置表'''
    name = required.String(desc='配置名称', index=True, search=True, len=255, notnull=True)

xorm 表相关

关键字说明关键字说明
class开始标记alias表文字说明
mode定义 CURD url 中的 mode 字段niuhe在生成对应的 niuhe 是否覆盖已存在的 niuhe 文件内容
dao在生成对应的 dao 是否覆盖已存在的 dao 文件内容service在生成对应的 service 是否覆盖已存在的 service 文件内容
model在生成对应的 model 是否覆盖已存在的 model 文件内容vite在生成对应的 vite 是否覆盖已存在的 vite 文件内容, 需在 .config.json5 中 langs 中添加 "vite"`

xorm 字段相关

语法: name=label.type(attrs)

labeltype 部分同类中的字段, 这里仅列出 attrs 部分

关键字说明关键字说明
desc字段描述group类型为 Enum/StringEnum 时指定常量组枚举
json重命令json 名omit值为空序列化时丢弃本字段
demo字段示例值ver字段版本号
index将字段标记为索引len指定字段长度
notnull字段标记为非空date字段类型为 time.Time
default指定字段默认值search字段是否出现在分页搜索参数中