gpt4 book ai didi

protocol-buffers - 如何将 rpc 标记为已弃用

转载 作者:行者123 更新时间:2023-12-04 01:43:55 25 4
gpt4 key购买 nike

如果我有这样的服务:

service MyService {
rpc GetThings(GetThingsRequest) returns (GetThingsResponse);
}

我将如何标记 GetThings已弃用?

我知道如何将字段或消息标记为已弃用,但我找不到有关 rpcs 的任何信息。

这是 proto3 的。

最佳答案

TL;DR:这是可能的,但它不会生成编译器警告。考虑使用字段级弃用。

看起来可以向服务添加不推荐使用的选项,就像在消息和枚举上一样:

service MyService {
rpc GetThings(GetThingsRequest) returns (GetThingsResponse) {
option deprecated = true;
};
}

在以下位置找到: https://github.com/google/protobuf/issues/1734

即使它可以编译,但在使用时似乎不会生成编译器警告。我在 Java 中尝试过,使用 HelloWorld service来自 Java quick start guide .进一步检查生成的java文件HelloWorldProto.java,发现该类没有添加 @Deprecated java注解,但文件中存在一些差异,最有可能是proto描述中的proto注解:
$ diff HelloWorldProto-{control,method}.java
38c38
< "ssage\030\001 \001(\t2I\n\007Greeter\022>\n\010SayHello\022\030.hel" +
---
> "ssage\030\001 \001(\t2L\n\007Greeter\022A\n\010SayHello\022\030.hel" +
40,41c40,41
< "eply\"\000B6\n\033io.grpc.examples.helloworldB\017H" +
< "elloWorldProtoP\001\242\002\003HLWb\006proto3"
---
> "eply\"\003\210\002\001B6\n\033io.grpc.examples.helloworld" +
> "B\017HelloWorldProtoP\001\242\002\003HLWb\006proto3"

在尝试请求消息、服务和文件级别的选项时,我也得到了类似的结果。我的预感是这是 Java 代码生成器中缺少的功能。将不推荐使用的选项添加到字段时,我确实收到了想要的编译器警告:
$ ./gradlew installDist
...
Note: Some input files use or override a deprecated API.
...

我所看到的你的选择:
  • 将请求消息中的所有字段标记为已弃用。然后,一旦有人使用它,您就会显示编译器警告。喜欢:
    message HelloRequest {
    string name = 1 [deprecated=true];
    }
  • 使用 grpc 方法上已弃用的选项(如上所示) 未显示编译器警告,依赖用户仅查看此文档。
  • 打开一个github问题。
  • 以上所有:)
  • 关于protocol-buffers - 如何将 rpc 标记为已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43275832/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com