常见问题

1. 怎么体验新的 API 特性?

api 新特性目前处于测试阶段,如果你想体验新特性,可以通过如下命令安装最新的 goctl 工具,且需要开启 GOCTL_EXPERIMENTAL 环境变量。

  1. $ goctl env -w GOCTL_EXPERIMENTAL=on

从 1.5.1 版本开始内测支持 API 新特性,新特性包括:

  1. 数据类型支持数组类型
  2. 支持标签忽略
  3. 路由支持纯数字,如 /abc/123/
  4. api 解析器从 antlr4 迁移到 goparser

当然 1.5.1 如果开启新特性功能,会有一些不兼容的地方

  1. syntax 头部变为必填

数据类型写法可参考 《类型声明 • 示例》 中 goctl 1.5.1 说明部分内容

2. goctl api 生成报错: multiple service names defined …

在 api 语法文件中,不支持声明多个 service,比如如下写法是不支持的:

  1. service foo {
  2. @handler fooPing
  3. get /foo/ping
  4. }
  5. service bar {
  6. @handler barPing
  7. get /bar/ping
  8. }

灰色底纹部分 foobar 是不支持的,只能声明一个 service,比如:

  1. service foo {
  2. @handler fooPing
  3. get /foo/ping
  4. }
  5. service foo {
  6. @handler barPing
  7. get /bar/ping
  8. }

3. goctl api 不支持 any 类型

api 语法里面不支持使用泛型、弱类型。