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

SpringDoc应用程序文档。yaml不要表现出狂妄自大的样子医生

穆季萌
2023-03-14

我有一个夸夸其谈的API。endpoint示例:

@ApiOperation(value = "Returns a list of Pix transactions.",httpMethod = "POST",response = DResponse.class)
@PostMapping("/transactions")
public ResponseEntity<DResponse> getTransactions(@RequestBody PixTransactionRequest pixTransactionRequest) {
    return ResponseEntity.ok(pixService.getTransactionsPix(pixTransactionRequest));
}

我的招摇过市页面正确显示了所有信息:

但是当我尝试生成yaml文档时,这个描述不起作用。我看不到endpoint的描述(返回Pix事务列表)在我的yaml文档中:

/api/pix/transactions:
post:
  tags:
  - pix-controller
  operationId: getTransactions
  requestBody:
    content:
      application/json:
        schema:
          $ref: '#/components/schemas/PixTransactionRequest'

共有1个答案

蒋何平
2023-03-14

问题是因为您在Springdoc中使用了Swagger 1. x注释,而支持的Swagger规范是Swagger 2. x(又名OpenAPI规范)

对于此问题的解决方案,请使用@操作注释来获得预期的输出。

请注意,无法使用新注释指定返回类型。因此,为了实现相同的功能,您需要重新编写您的招摇过市注释,如下所示

// Describe the Operation
@Operation(summary = "Returns a list of Pix transactions.", description = "Any long description about the endpoint that you want")
// Describe the Response of the Operation. Use the below way if only 1 type of response will be returned by the endpoint
@ApiResponse(responseCode = "200", description = "OK", content = {@Content(mediaType = "application/json", schema = @Schema(DResponse.class))})

如果endpoint可以返回超过1个响应,请使用以下方法

@ApiResponses(value = {
        @ApiResponse(responseCode = "201", description = "Created", content = {@Content(mediaType = "application/json", schema = @Schema(DResponse.class))}),
        @ApiResponse(responseCode = "500", description = "Internal Server Error", content = {@Content(mediaType = "application/json", schema = @Schema(implementation = MyErrorResponse.class))})
})

并且没有替代的http方法="POST"@Api操作。Swagger 2. x通过放置在方法上的请求注释的类型推断操作的类型,即@PostMap将给出POST请求等等。当您使用@刚需映射指定请求方法的类型时,此规则仍然有效。

 类似资料:
  • 我在这里找到了一个非常简洁的链接来托管Swagger用户界面中的yaml文件,但是它使用了Springfox而不是Springdoc,所以我想知道是否有任何其他类似的方法,因为我的公司更喜欢后者。 我真的很感激任何帮助,只要有个导游就可以了。

  • 我阅读了https://springdoc.github.io/springdoc-openapi-demos/文档,以使用springdoc-openapi-webflux-UI。正如文档所说,我刚刚向我的应用程序添加了库: 此外,我在application.yml中定制了API的路径: 当我启动应用程序并转到http://localhost:8080/swagger-ui.html时,它会将我

  • 是否可以使用接口而不是实现这些接口的控制器类来生成swagger ui文档? 将文档放在实现类中会使它看起来杂乱无章。Springfox有这个选项,它在springdoc中可用吗?如果是,怎么做?

  • 问题内容: 我正在建立一个chrome扩展程序,它将Widget类的东西附加到gmail消息上。当用户位于gmail.com网站上时,它会显示在每封电子邮件(类似于gmail上下文小工具)的下方。 我看了一些像TwitterBootstrap这样的CSS框架,可以在我的应用程序中使用。当我在mywidget中使用它时,由于CSS类名冲突,它与现有的gmail样式弄混了。在没有名称冲突的地方还有其他

  • 要理解序列样式,理解集合很重要。 集合和序列样式的概念并行工作。 YAML中的集合以适当的序列样式表示。如果要引用正确的标签排序,请始终参考集合。 YAML中的集合由数组中表示的从零开始的连续整数编制索引。 序列样式的重点始于集合。 示例 假设要将宇宙中行星的数量视为可以作为集合创建的序列。 以下代码显示如何表示宇宙中行星的序列样式 - 然后,可以看到JSON格式的有序序列的以下输出 -

  • 我一直在App Engine中阅读有关进入app.yaml的配置指令的参考资料,例如'DBG_ENABLE'。但我在我的Android Studio创建的GAE项目中找不到这个文件。此外,我发现这个文件中的一些指令(例如:缩放)也有等效的appengine-web.xml. 那么,这个yaml文件是怎么回事?我需要创建它吗?哪里