github.com/aacfactory/fns@v1.2.86-0.20240310083819-80d667fc0a17/docs/definition_zh.md (about) 1 # 定义 2 3 ------ 4 5 ## 服务 6 7 服务是一组`fn`。且服务是`fns`的核心组件, 诸如数据库、消息队列都是服务, 服务的注解如下: 8 9 | Annotation | Type | Required | Description | 10 |-------------|--------|----------|-------------------------------| 11 | service | string | true | 服务的名称 | 12 | title | string | false | 用于OAS的TAG标题 | 13 | description | string | false | 用于OAS的TAG描述 | 14 | internal | bool | false | 如果为真,则来自公网的请求无法直接访问 | 15 16 17 18 ## 函数 19 20 函数代表着业务, 第一个参数必须是 `context.Context`,第二个参数必须是 `struct`的值类型, 第一个返回值必须是 `pointer` 或者 `slice`,第二个返回值必须是 `errors.CodeError`, 函数的注解如下: 21 22 | Annotation | Type | Required | Description | 23 |---------------|------------------------------------|----------|-----------------------------| 24 | fn | string | true | 函数名称 | 25 | validate | bool | false | 是否开启自动参数校验 | 26 | authorization | bool | false | 是否开启自动认证校验 | 27 | permission | []roleName | false | 是否开启权限校验,值为角色名,即哪些角色可以访问该函数 | 28 | transactional | enum(sql, postgres, mysql, dgraph) | false | 是否自动开启和管理数据库事务 | 29 | deprecated | bool | false | 是否为弃用 | 30 | title | string | false | 用于OAS的请求标题 | 31 | description | string | false | 用于OAS的请求描述 | 32 | internal | bool | false | 与服务的效果一样 | 33 34 ## Context 35 请求的上下文是一棵树,每个函数的上下文都附着在这棵树上。 36 37 ```text 38 |-- request context 39 |-- fn context 40 |-- fn context 41 |-- fn context 42 ``` 43 上下文中由 `current fn log`, `current service components`, `application id`, `service endpoint discovery` 和 `tracer`。 44 45 举例: 46 ```go 47 log := service.GetLog(ctx) 48 49 ``` 50 51 ## 参数字段注解 52 53 | Tag | Type | Required | Description | 54 |----------|--------|----------|--------------------------------------------------------------------| 55 | json | string | false | json tag | 56 | validate | string | false | 校验器名, 由 [validator](https://github.com/go-playground/validator) 实现 | 57 | message | string | false | 校验失败后的消息提示 | 58 59 ## Task 60 任务是协程的代理,由fns的协程池管理。