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

通过GRPC使用swagger生成响应示例值

盖和洽
2023-03-14

我正在使用gRPC服务的protoc gen swagger生成swagger json文件。输出json是用空响应示例生成的,我想向定义中添加响应示例,以便在生成的json中自动填充。

这是我目前的定义。

service UserService {
  rpc GetUser (GetUserRequest) returns (UserResponse){
    option (google.api.http) = {
      get: "/api/v1/user/{username}"
      response_body: "*"
    };
    option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = {
      description: "Returns user object";
      operation_id: "get_user";
      summary: "Get User";
    };
  }
}

message GetUserRequest {
  string username = 1;
}

message UserResponse {
  User user = 1;
}

message User {
  string first_name = 1;
  string last_name = 2;
  string username = 3;
}

当我使用命令生成swagger文件时

protoc -I ${PROTOPATH} \
           -I $GOPATH/src \
           --swagger_out=logtostderr=true:${OUT_PATH}

我得到一个包含此用户对象定义的swagger文件

"User": {
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string"
    },
    "last_name": {
      "type": "string"
    },
    "username": {
      "type": "string"
    },
  }
}

我想用如下示例值生成它:

"User": {
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string",
      "example": "Adam"
    },
    "last_name": {
      "type": "string",
      "example": "Smith"
    },
    "username": {
      "type": "string",
      "example": "asmith79"
    },
  }
}

共有1个答案

晏兴发
2023-03-14

在此处找到此问题的答案:https://github.com/grpc-ecosystem/grpc-gateway/blob/master/examples/internal/proto/examplepb/a_bit_of_everything.proto#L197

通过添加grpc即可简化。网关。protoc\u gen\u昂首阔步。选项。将openapiv2\u架构作为消息的选项。

import "protoc-gen-swagger/options/annotations.proto";

message User {
  option (grpc.gateway.protoc_gen_swagger.options.openapiv2_schema) = {
    example: { value: '{ "first_name": "Adam", "last_name":"Smith", "username":"asmith79"}' }
  };
  string first_name = 1;
  string last_name = 2;
  string username = 3;
}

 类似资料:
  • 目前正在使用springfox 2.9.2大摇大摆地记录Spring中创建的API。我想在文档中添加示例响应,如下图所示; 我的理解是,我可以做类似的事情: 在本例中,我将此代码片段放在方法的正上方。不幸的是,上面的两个示例总是显示:标识符预期错误 但我也看到我也能做到这一点: 我还看到我可以添加一个级别的示例: 我的问题是: > 将Swagger/Springfox指向my model/bean

  • 我用虚张声势的皮带扣。AspNetCore库生成Swagger文档。是否可以将多个错误消息添加到一个状态代码中?例如,我有一个字段,它有验证,所以我需要在我的文档中使用它: 在以前版本的库中,我可以将验证错误放入描述中,但该属性在最新版本中不可用。我们有没有描述参数的属性。

  • 简介 gRPC-swagger 是基于 gRPC 反射开发的一款 gRPC 调试工具,可以使用 swagger-ui 方便地展示和调用 gRPC 方法。因为 gRPC-swagger 是基于反射开发,所以使用时无需修改 proto 及相关的代码实现,只需在启动服务时开启反射功能。 特点 简单易用,只需启动服务时允许反射,无需修改 proto 及相关的实现。 集成 swagger-ui,可以方便的查

  • 我正在使用一个Spring Boot应用程序,并使用Swagger UI进行配置。 我想知道我们是否可以用示例值预先填充示例值,这样我们就可以点击“try it out!”按钮,而不必输入一些示例值以获得响应。 我正在使用一个带有springfox-swagger2:2.7.0和springfox-swagger-ui:2.7.0的Spring Boot项目,并使用Gradle添加了依赖项。

  • 昨天看到了一篇关于二维码使用的文章,其设计初衷是使用二维码卡片来帮助小朋友控制智能音箱。即在 Raspberry Pi 上使用摄像头来识别二维码,二维码卡片上是一些简单的操作,如播放音乐、暂停等等,卡片的另外一面则是相应的解释。这是一个有趣的二维码在物联网应用的场 景。 于是乎,我便想尝试一下直接在云端生成二维码图片,并保存。当然了,对于二维码来说,直接在浏览器上生成显然是更加简单友好的。 总览

  • 问题内容: 我正在使用mpdf库生成用户生成的html的PDF。我可以使PDF成功保存到服务器,但是我希望PDF在用户浏览器中打开。我尝试使用mpdf的输出选项在浏览器中打开文件或提示下载,但是当我使用AJAX将html数据发送到脚本时都没有发生。 这是我的AJAX: 这是我的PDF生成脚本: 我正在使用AJAX,因此无需浏览页面即可创建PDF。我的代码中是否有错误,还是应该使用其他方法? 问题答