【Go-Zero】Error: user.api 27:9 syntax error: expected ‘:‘ | ‘IDENT‘ | ‘INT‘, got ‘(‘ 报错解决方案及api路由注意事项

14 篇文章 0 订阅

【Go-Zero】Error: user.api 27:9 syntax error: expected ‘:’ | ‘IDENT’ | ‘INT’, got ‘(’ 报错解决方案及api路由注意事项


大家好 我是寸铁👊
总结了一篇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‘报错解决方案

那按照这个看一下是不是: 的问题?

Step1

首先,定位到报错的那一行代码。

在这里插入图片描述

很明显这里没有: ,所以和之前的报错是不一样的类型

Step2

这里传入入参UserCreateRequest和返回出参string,没问题。
那试一下把所有的/ 目录左右的位置靠拢一下。

在这里插入图片描述

还是报错如下:

Error: user.api 27:9 syntax error: expected ‘:’ | ‘IDENT’ | ‘INT’, got ‘(’

这说明问题不在于位置。

Step3

不妨看一下官方文档,会不会是与这个/有关。
我这里的编写是直接访问/目录即可,无需添加其他的子路由。

官方文档如下:
是有添加子路由的
在这里插入图片描述

官方没有说明api文件的编写不能用/直接访问


所以,不妨试一下是不是这个问题?
在根目录/的基础上,添加子路由userCreate

在这里插入图片描述


执行goctl ,结果如下:
在这里插入图片描述
转换成功!


总结

这说明在使用@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面试向

【Go面试向】defer与time.sleep初探

【Go面试向】defer与return的执行顺序初探

【Go面试向】Go程序的执行顺序

【Go面试向】rune和byte类型的认识与使用

【Go面试向】实现map稳定的有序遍历的方式

  • 29
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寸 铁

感谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值