大家好 我是寸铁
总结了一篇Error: user.api 27:9 syntax error: expected ‘:’ | ‘IDENT’ | ‘INT’, got ‘(’ 报错解决方案及api路由注意事项的文章✨
喜欢的小伙伴可以点点关注
大家好,我是寸铁!今天在使用goctl
一键转换代码时,出现了个小bug
。下面我们一起来看一下这个bug
是什么?
编写api
文件如下:
PS: 这段代码添加了路由前缀
@server (
prefix: /api/users
)
user.api
//这里的type后面的字段一定要大写
//登录的请求信息 登录的入参
type UserCreateRequest {
Username string `json:"username"`
Password string `json:"password"`
}
//定义用户信息
type UserInfoResponse {
//用户的id
UserId uint `json: "user_id"`
//用户的名字
Username string `json: "username"`
}
//生成路由公共的前缀
//后面的Post和Get请求的路由省略掉公共的前缀部分
@server (
prefix: /api/users
)
//服务注册
service users {
@handler userInfo
get /:id returns (UserInfoResponse)
@handler userCreate
post / (UserCreateRequest) returns (string)
}
接着使用goctl
进行一键转换
goctl api go -api user.api -dir.
再检查了上面的语法后,暂时没发现什么明显的语法错误。
运行一下命令,结果如下:
具体如下:
Error: user.api 27:9 syntax error: expected ‘:’ | ‘IDENT’ | ‘INT’, got ‘(’
很熟悉的错误,我想了一下,这不就是我之前写的报错解决方案的博客?
【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)‘ | ‘KEY‘, got ‘IDENT‘报错解决方案
那按照这个看一下是不是
:
的问题?
首先,定位到报错的那一行代码。
很明显这里没有
:
,所以和之前的报错是不一样的类型
这里传入入参UserCreateRequest
和返回出参string
,没问题。
那试一下把所有的/
目录左右的位置靠拢一下。
还是报错如下:
Error: user.api 27:9 syntax error: expected ‘:’ | ‘IDENT’ | ‘INT’, got ‘(’
这说明问题不在于位置。
不妨看一下官方文档,会不会是与这个/
有关。
我这里的编写是直接访问/
目录即可,无需添加其他的子路由。
官方没有说明
api
文件的编写不能用/
直接访问
所以,不妨试一下是不是这个问题?
在根目录/
的基础上,添加子路由userCreate
这说明在使用@server
设置路由前缀的基础上,不能直接访问根目录,需要设置子路由
!这也是官方说明文档更新信息的一个小缺漏。
【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)‘ | ‘KEY‘, got ‘IDENT‘报错解决方案
【Go-Zero】Error: only one service expected goctl一键转换生成rpc服务错误解决方案
【保姆级教程】Windows11下go-zero的etcd安装与初步使用
【保姆级教程】Windows11安装go-zero代码生成工具goctl、protoc、go-zero
【Go-Zero】手把手带你在goland中创建api文件并设置高亮
【Go-Zero】Error: user.api 27:9 syntax error: expected ‘:‘ | ‘IDENT‘ | ‘INT‘, got ‘(‘ 报错解决方案及api路由注意事项
【Go-Zero】Error: only one service expected goctl一键转换生成rpc服务错误解决方案
【Go-Zero】【error】 failed to initialize database, got error Error 1045 (28000):报错解决方案
【Go-Zero】Error 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)报错解决方案
【Go-Zero】type mismatch for field “Auth.AccessSecret“, expect “string“, actual “number“报错解决方案
【Go-Zero】Error: user.api 30:2 syntax error: expected ‘)‘ | ‘KEY‘, got ‘IDENT‘报错解决方案
【Go-Zero】Windows启动rpc服务报错panic:context deadline exceeded解决方案
【Go面试向】defer与time.sleep初探
【Go面试向】defer与return的执行顺序初探
【Go面试向】Go程序的执行顺序
【Go面试向】rune和byte类型的认识与使用
【Go面试向】实现map稳定的有序遍历的方式