如何在 SpringDoc OpenAPI3 中引用文件?

bac*_*tos 8 java swagger-ui spring-boot openapi

我有 Springboot 项目,我想在其中记录我的 API:

这是正在处理的 Web 服务的示例:

    @ApiResponses(
        value = {
                @ApiResponse(responseCode = "200", content =  @Content(
                        mediaType = "*/*",
                        schema = @Schema(implementation = Object.class),
                        examples = {
                                @ExampleObject(name = "boo",
                                summary = "example of boo",
                                ref = "#/swagger/Planner/semi_planif_200_response.json")
                        }

                ))
        }
)
@PostMapping(value = "/startSemiPlanification", produces = "application/json")
private ResponseEntity<Object> startSemiPlanner( @RequestBody PlanificationDto planificationData,
                                                @RequestParam(name = "groupByUserCode", required = false) Optional<Boolean> groupByUserCode,
                                            @RequestParam(name = "range", defaultValue = "18") Integer range
Run Code Online (Sandbox Code Playgroud)

我的问题是 Swagger 无法解析此引用 ref = "#/swagger/Planner/semi_planif_200_response.json" 我什至尝试过使用绝对路径,但它不起作用: 来自 swagger 的错误消息

这是文件路径:

文件路径

bac*_*tos 4

引用不会在编译时解析,而是在运行项目后,swagger 引擎将解析引用,因为它们是服务器内的静态资源:

 $ref= resources/swagger/user.json 
Run Code Online (Sandbox Code Playgroud)

如果我们在 localhost 中运行实例,则将从以下 url 获取资源:localhost:8080/resources/swagger/user.json

提示:确保 Spring 资源处理程序将目标资源放置在指定位置!

  • 尝试了你的解决方案。确实 localhost:8080/resources/swagger/user.json 可用。但是 swagger 不会用 ref 的 json 内容替换示例 ref。@Parameter(name = "myparameter" Examples={@ExampleObject(name="test", ref="resources/swagger/user.json"})。帮助将不胜感激! (2认同)