【问题标题】:Load a Swagger API Url parameter dynamically in Spring Boot Project java在 Spring Boot Project java 中动态加载 Swagger API Url 参数
【发布时间】:2020-08-17 10:48:56
【问题描述】:

我有一个要求,我必须动态加载 Swagger api url 参数,即在项目编译时。这是一个 Spring Boot 项目。因此,例如,如果有这样的事情:-

在我运行 swaggerUi 时,这个 api 应该看起来像 "/pet/1"。我知道我们必须在项目本身中提供包含 "petId" 的数据/文件,以便仅在编译时获取 petId 的值。我只是不知道在 Spring Boot Java 项目中在何处以及如何执行此操作,其中这些 Swagger API 是通过启用 Swagger 的 REST 注释(如下所示)创建的:- @RequestMapping(value = "/pet/{petId}", 消费 = {"text/plain" }, method = RequestMethod.POST) .再次总结一下 - 当我为我的项目运行 Swagger UI 时,上面给出的 api 应该看起来像 "/pet/1" (petId = 1) 而不是 "/pet /{petId}”。非常感谢任何帮助。

【问题讨论】:

    标签: java spring-boot rest openapi


    【解决方案1】:

    你必须像下面的例子那样使用@ApiParam注解:

        @GetMapping(BASE_URL_USERS + "/{id}")
        @ApiOperation(value = "getUserById() - Retrieves a user by ID",
                authorizations = {@Authorization(value = "basicAuth")}
        )
        @ApiResponses(value = {
                @ApiResponse(code = 200, message = "Success"),
                @ApiResponse(code = 401, message = "Invalid credentials"),
                @ApiResponse(code = 404, message = "User not found"),
                @ApiResponse(code = 500, message = "Internal server error")
        })
        @ResponseStatus(value = HttpStatus.OK)
        UserDTO getUserByIdUsingGET(
                @ApiParam(value = "ProcessID", required=false) @RequestHeader(value="processID", required=false) String processID,
                @ApiParam(value = "User ID",required=true) @PathVariable("id") Long id
        );
    

    然后您会得到一个输入字段,您可以在其中提供您的实际参数。

    【讨论】:

    • 我已经有这个字段来提供 userId 值(在你的例子中)。我想要的是,当我点击 SwaggerUI 时,api(当前在您提供的上图中显示为 "/user/{id}" )应该显示为 "/user/ 1"id 应该在启动项目时动态加载/附加。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-21
    • 2018-02-12
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 2023-02-16
    相关资源
    最近更新 更多