水城
水城
发布于 2024-09-14 / 129 阅读 / 0 评论 / 0 点赞

protobuf文件定义接口导出swagger文档的description

问题

proto文件导出swagger文档,然后导入到apifox中使用
发现summary不能换行,想加入更多的说明,不方便
description可以起到这个作用

简单的protobuf模板

syntax = "proto3";

package helloworld;

service Greeter {
    rpc SayHello (HelloRequest) returns (HelloReply) {}
}
message HelloRequest {
    string name = 1;
}

message HelloReply {
    string message = 1;
}

常用的protobuf模板

syntax = "proto3";

package helloworld;

service Greeter {
	// 打招呼。 这里的注释,可以解析到swagger get方法的summary
    rpc SayHello (HelloRequest) returns (HelloReply) {
    	 option (google.api.http) = {
          get : "/api/v1/test/hello"
        };
    }
}
message HelloRequest {
    string name = 1;
}

message HelloReply {
    string message = 1;
}

解决后的protobuf模板

其中 description 可以换行,适合写入更多内容
参考 https://zhuyasen.com/post/grpc.html

syntax = "proto3";

package helloworld;

service Greeter {
	// 打招呼。 这里的注释,可以解析到swagger get方法的summary
    rpc SayHello (HelloRequest) returns (HelloReply) {
    	 option (google.api.http) = {
          get : "/api/v1/test/hello"
        };
      option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_operation) = {  
        summary: "打招呼",  
        description: "参数name说明\n1.xxx\n2yyy",  
        tags: "v1.0.0",  
      }; 
    }
}
message HelloRequest {
    string name = 1;
}

message HelloReply {
    string message = 1;
}

生成swagger如下
image-1726283151441
apifox
image-1726283233145

后续

还想将 Example 加入到protobuf中,没有找到实现方法

将这些说明加入到protobuf文件里,方便git管理


评论