【问题标题】:How do I create an OpenApi from a Rest interface?如何从 Rest 接口创建 OpenApi?
【发布时间】:2021-12-13 11:25:22
【问题描述】:

我想在 OpenApi 中映射这个 rest 接口? 是否有一个工具可以让我从其余接口创建一个 OpenApi 而无需在我的 Spring Boot 应用程序中包含这个工具?或者有没有我可以用来在 Openapi 中自己构建界面的模板?我将非常感谢您的方法。

@GetMapping("/page")
    public Page<FootballTeamLocationEntityView> getPageableFootballTeamList(@PageableDefault(value = 10) Pageable pageable) {
        return footballTeamService.getFootballTeams(pageable);
    }

我使用 OpenApi 3.0 和 Spring Boot 2

更新 1

   default  ResponseEntity<FootballTeamLocation> getPageableFootballTeamList(Pageable pageable) {
        getRequest().ifPresent(request -> {
            for (MediaType mediaType: MediaType.parseMediaTypes(request.getHeader("Accept"))) {
                if (mediaType.isCompatibleWith(MediaType.valueOf("application/json"))) {
                    String exampleString = "{ \"name\" : \"Westfalen-Stadion\", \"locZ\" : 5.962133212312, \"externalId\" : \"externalId\", \"locX\" : 6.02749381870403, \"id\" : 0, \"locY\" : 11.4658129805029452 }";
                    ApiUtil.setExampleResponse(request, "application/json", exampleString);
                    break;
                }
            }
        });
        return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);

【问题讨论】:

    标签: spring-boot pagination openapi


    【解决方案1】:

    考虑使用 springdoc。它是一个最新的库,比 Springfox(Spring Boot 应用程序的另一个选项)更易于使用且不易出错。我们在 2 年前搬到这里,我们很高兴我们做到了。网上有很好的文档和教程:

    它也非常活跃,您通常会在github page 上很快得到解答。

    【讨论】:

    • 感谢您的回复。我听取了您的建议并得到了一个 OpenApi(但格式非常糟糕:D)唯一的问题是 OpenApi 与我的其余接口不匹配。在 Update 1 中你可以找到我的 Autogenerieten Rest 界面。
    • OpenApi 为我构建了一个返回类型响应实体的休息接口,我想在其中取回类型 Page。
    • 现在我很困惑。您的问题不是关于如何为您的 REST API 获取 OpenAPI 定义吗?为什么要根据您刚刚从编码的 REST API 获得的 OpenAPI 定义自动生成 REST API?
    • 通常,您使用 OpenAPI 定义为 REST API 生成客户端或创建存根服务器,但我从未听说过使用它来生成真正的服务器端代码。这对我来说毫无意义。
    • 基本上,我基于手动创建的 OpenApi 生成我的 RestController。然而,使用分页它不起作用,所以我反其道而行之。我现在感谢 RestController 对 OpenApi 生成的上述方法的帮助。从 OpenApi 生成的方法必须在 RestController 中被覆盖,以便我的服务有一个接口。还是我错了?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-30
    • 1970-01-01
    • 2022-07-18
    • 2018-12-13
    • 2022-07-23
    • 2012-01-15
    相关资源
    最近更新 更多