以下是我为测试用例编写的文件,这是在上面包含的
v1.go
文件中定义 endpointrequest
对象的方式:,上面的测试用例似乎工作正常。,我设置了验证规则,有效地使参数 a
成为强制参数,因为它要求 a
是一个至少包含 1 的字符串。因此,如果省略 a
,端点将返回 400。,但现在我想确保如果省略 c
或 b
端点返回 400。我怎样才能做到这一点?在 protobufs 3 中,他们删除了 required
关键字。那么我如何检查是否传入了非字符串参数并做出相应的反应?,简短的版本:你不能。,required
被删除主要是因为它使更改向后不兼容。尝试使用验证选项重新实现它并不是那么激烈(更改更容易),但会遇到如您所见的缺点。,相反,将验证保留在原型定义之外,并将其移至应用程序本身。每当您收到消息时,您都应该检查其内容(当 required
出现时也是如此)。在极少数情况下,由 options 或 required
提供的简单验证就足够了。,