niuhe 语法
niuhe 文件语法上遵从 python
语法. 可引用 include
引入文件
注意
生成 golang 代码时, 命令行支持 gofmt
会更好
入口
默认读取当前工作区下的 niuhe
文件夹 内的 all.niuhe
文件. 可通过修改设置来更改此入文件的位置。
定义 app name(admin
), 默认为 admin
#app=admin
定义整数常量
class AuthTypeEnum(ConstGroup)
ALL = Item(0, '所有人可见')
SOME = Item(1, '部分人可见')
生成的代码
var AuthTypeEnum struct {
*niuhe.IntConstGroup
ALL niuhe.IntConstItem `name:"所有人可见" value:"0"`
SOME niuhe.IntConstItem `name:"部分人可见" value:"1"`
}
其中 ConstGroup
为常量类型, AuthTypeEnum
为本组枚举的名字. class
为一个结构开始标记
定义请求结构
class UserItem(Message):
'''用户信息, class 注释例子, 注释可选'''
nickname = required.StringField()
avatar = optional.StringField(desc='头像')
生成的代码
type UserItem struct {
Nickname string `json:"nickname" zpf_name:"nickname" zpf_reqd:"true"` //
Avatar string `json:"avatar" zpf_name:"avatar"` // 头像
}
Message
表示定义的是一个结构。
结构变量修饰符为重复类型
.类型
, 以及可选的说明注释组成
###重复类型
required
, optional
, repeated
, mapping
- required 表示这个此结构作为请求参数时本参数必填
- optional 表示此结构作为请求结构时本参数可选
- repeated 表示生成的成员为数组
- mapping 表示生成的成员为 map 形式, 内部可填充任意值
成员类型
IntegerField
, DecimalField
, FloatField
, LongField
, StringField
, BooleanField
, MessageField
, EnumField
,StringEnumField
, FileField
, AnyField
- IntegerField 生成
int
- DecimalField 生成
float64
- FloatField 生成
float64
- LongField 生成
int64
- StringField 生成
string
- BooleanField 生成
bool
请求时对应0
和1
- MessageField 对应定义的
Message
结构. 通过 cls
指定,如: users = repeated.MessageField(desc='用户列表', cls=UserItem)
- EnumField 对应定义的
ConstGroup
结构. 通过 group
指定,如: auth = repeated.EnumField(desc='认证类型', group=AuthTypeEnum)
- FileField 读取
header
中对应的文件
- AnyField
map[string]interface{}
定义一个无成员的空结构时使用pass
如:
class NoneReq(Message):
pass
定义方法
with services():
POST("获取用户信息", '/api/user/info/', NoneReq, wraps(UserItem))
...
with services():
为定义请求路由的开始结构为: 方法·
(注释
,路由
,请求参数结构
,wraps(返回数据结构
)) 组成。
方法
请求方法当定义了 POST
, GET
和 POST_GET
三种
路由
路由由/model
/view
/方法
/ 三段组成, model
相同的会生成在同一个文件夹下, model
和 view
相同的会生成在同一文件内, 同一个 view
下的方法会生成在同一文件内.
方法的定义分部分的和全部的两种
POST("获取用户信息", '/api/user/info/')
POST("获取用户信息", '/api/user/info/', NoneReq, wraps(UserItem))
数据库格式
conf/appName.yaml 中 db 配置格式
db:
main:user:pwd@tcp(host:port)/database_name?charset=utf8mb4