New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
proto. When the field of the query string passed by the front end is an empty string, the field parsed by the back end is nil. #3117
Comments
🤖 感谢您的反馈。我看到您在使用Kratos v2.7.1版本,但是最新的版本是v2.7.2。我想知道您是否尝试过在最新版本上复现这个问题? 另外,我需要更多的信息来帮助我理解这个问题。您能提供一些关于您的环境的更多信息吗?例如,您正在使用的操作系统和版本,以及您的Go环境配置等。 最后,如果可能的话,能否提供一些更详细的代码示例,以便我更好地理解您的问题?这将有助于我更准确地找到问题的原因。 期待您的回复。 This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research. Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant. If you want to continue the conversation, start your reply with @dosu-bot. |
@tonybase Why did you add a See the code below, should we return errors in kratos/encoding/form/proto_decode.go Lines 116 to 126 in c7fa51d
kratos/encoding/form/proto_decode.go Lines 161 to 168 in c7fa51d
|
Hi, @jeanh0w, I'm helping the Kratos team manage their backlog and am marking this issue as stale. The issue concerns the back end parsing an empty string as nil instead of an empty string in Kratos version v2.7.1 and Go version go1.21.1. There have been discussions about checking if the issue persists in the latest version, v2.7.2, and requests for more information about the user's environment. Additionally, there are questions about a specific code change that may have caused the issue and links to the relevant code sections for further investigation. Could you please confirm if this issue is still relevant to the latest version of the Kratos repository? If it is, please let the Kratos team know by commenting on the issue. Otherwise, feel free to close the issue yourself, or the issue will be automatically closed in 7 days. Thank you for your understanding and cooperation. If you have any further questions or updates, feel free to reach out. |
What happened:
proto中定义optional的字段,当前端传的query string的字段是空字符串时,后端解析到的字段是nil
What you expected to happen:
希望后端查询到的字段是非nil
How to reproduce it (as minimally and precisely as possible):
proto 定义如下:
message UserDetailReply {
optional string Status = 1;
}
启动服务,查询接口:http://localhost:8888/?Status=
后端入参:req *pb.UserDetailRequest
打印出 fmt.Println(req.Status) 结果是 nil
希望得到的结果是非nil,*req.Status取到空字符串
Anything else we need to know?:
如果当前是 Post 请求,在body里传 {"Status":""},后端是可以正常得到非nil的 req.Status
当是 Get 请求,query string 里 传 Status= 后端得到的req.Status就是nil
经过调试后发现是如下代码将字段设置为nil:
请问这样设计的原因是什么呢?
Environment:
kratos -v
): kratos version v2.7.1go version
): go version go1.21.1 darwin/amd64cat /etc/os-release
):The text was updated successfully, but these errors were encountered: