当前位置: 首页 > 知识库问答 >
问题:

在proto3消息中,是否有方法将字段标记为请求不需要和响应需要?

何向荣
2023-03-14

我有以下Prop3消息结构:

message BaseBuildContent {
  string locale = 1;
  string buildVersion = 2;
  string buildLabel = 3;
  google.protobuf.Timestamp createTime = 4;
}

在我的应用程序中,我对一些请求和响应使用了“相同”的结构。我想要实现的是,在我们讨论请求对象时,以某种方式(如果可能的话)将createTime字段标记为not required,在我们讨论响应对象时,将其标记为required。

是否可以在不创建单独消息的情况下执行此操作?

谢啦

共有1个答案

锺离浩慨
2023-03-14

据我所知,这是不可能的,我不鼓励寻求解决方案,而不是定义不同的消息类型:一个包含可选字段,另一个不包含。

解决这个问题的一种方法是定义一条包含必填字段的消息,而不是扩展它:

message BaseBuildContent {
  string locale = 1;
  string buildVersion = 2;
  string buildLabel = 3;
}

message SomeRequest {
  BaseBuildContent content = 1;
}

message SomeResponse {
  BaseBuildContent content = 1;
  google.protobuf.Timestamp createTime = 2;
}

注:Protobuf style guide建议消息名为PascalCased,字段名为snake\u cased

 类似资料:
  • (仅限类和接口,必需) (仅限类和接口,必需。请参见脚注1) (仅限方法和构造函数) (仅限方法) (是Javadoc 1.2中添加的同义词) (或或) (请参阅如何以及何时弃用API) 在这里,似乎被标记为“required”,即使不是这样。这在我看来很奇怪。事实上,后来在同一份文件中,我发现了以下陈述: 您可以提供一个@author标记、多个@author标记或不提供@author标记。

  • 希望有人能提供帮助,我正在使用以下代码在React应用程序的endpoint执行抓取: 并返回错误:

  • 问题内容: 我想知道是否有必要使用完。该标记的信息,这是一个样式表-所以就我而言,实际上并没有添加任何东西。 HTML唯一使用的样式表格式仍然是CSS,因此对浏览器“说”什么?某些网站似乎添加了属性,而其他网站则没有。 那么,什么是使用的元素,是有必要包括它? 问题答案: HTML5规范不是必需的,但对于旧版本的HTML是必需的。 HTML 4 W3.org规范 Type代表样式表的MIME类型。

  • 我有一个具有必需属性的字段。当我按下Accept(接受)按钮保存一些数据而不在字段中输入任何值时,将显示一条错误消息。到现在为止,一直都还不错。但是,如果在此之后我决定单击“取消”按钮,则该错误消息将覆盖应该显示在

  • 我正在尝试编写一个批处理脚本来更改以下两个名为example1的JSON的“tags”键的值。json和示例2。json。 输入示例1。json 输入example2.json 预期的输出是两个同名的JSON,但标记值现在已更改。 Example1.json: 输入标记值-example1(即json文件名) 输出标签值-tags1(根据要求) Example2.json 输入标记值-exampl

  • 问题内容: 是编写Java程序所需的主要方法吗? 这是我的代码: 它显示了编译时的错误: 问题答案: Java程序不需要main方法。正如其他人指出的那样,Web应用程序不使用main方法。 在独立应用程序中甚至不需要它。考虑 我编译并运行并获得以下结果: 对于独立应用程序,您必须具有 主要方法或 静态初始值设定项。 Main是首选。