MockMvc 和 Swagger UI 的示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MockMvc 和 Swagger UI 的示例相关的知识,希望对你有一定的参考价值。

参考技术A github: https://github.com/liangyt/SpringbootControllerTest

以 <code>spring-boot-starter-web</code> 为基础,实现两个简单的restful api,一个是 Get 类型,一个是Post类型。

只需要再添加一个依赖

添加两个类,一个启动类,一个Controller
Controller比较简单, 如下:

启动类:

到这那准备工作已经完成了,下面再看一下使用MockMvc的测试类:

整个MockMvc的测试到这就全部完成了,可以跑一下测试示例看看结果。

要使用 <code>Swagger UI</code>还需要添加对应的依赖,有两个

为了让Swagger被启用,需要在启动类添加一个注解

这个 Swagger 就被启用了,服务启动的时候自动扫描对应的包.
新建一个Controller类用于测试Swagger,同时也为了区分MockMvc测试:

要看到效果,在控制台运行:

启动完成访问路径:

在 swagger UI 中生成示例示例(在 Spring boot 项目中)

【中文标题】在 swagger UI 中生成示例示例(在 Spring boot 项目中)【英文标题】:generate sample example in swagger UI (in Spring boot project) 【发布时间】:2017-11-17 12:09:41 【问题描述】:

我正在使用 Spring Boot 应用程序并已使用 Swagger UI 进行配置。

我想知道我们是否可以使用示例值预先填充示例值,以便我们可以点击“试试看!”按钮,而无需输入一些示例值来获得响应。

它必须在那里。

有没有办法我们可以使用注释或 Swagger 使用的单独文件来做到这一点?

我正在使用带有 springfox-swagger2:2.7.0 和 springfox-swagger-ui:2.7.0 的 Spring Boot 项目,并使用 gradle 添加了依赖项。

【问题讨论】:

【参考方案1】:

由于@ApiParam 属性exampleexamples 不起作用(请参阅this issue on GitHub),因此对添加示例的支持有限/不存在。

您可以对简单参数 (@RequestParam) 执行的操作是添加带有 defaultValue 属性的 @ApiParam 注释,如下所示:

@GetMapping
public List<Foo> findAll(
        @RequestParam(required = false)
        @ApiParam(defaultValue = "foo") // Put the default value here
        String input) 
    // ...

但是,尚不支持使用 @RequestBody 参数执行此操作。

@RequestBody 参数的一种可能解决方法是单击 Swagger 测试器右侧的代码框,其中显示 示例值。如果您单击它,它将将该示例插入到字段本身中。

【讨论】:

谢谢,我会调查的。同时,我刚刚在mattfrear.com/2015/04/21/… 阅读了有关 swashbuckle 的信息,但它似乎仅适用于 .NET。任何可用于 Java Spring 的东西。 相当肯定 Springfox 是为 Spring 生成 Swagger 文档的最佳方法。 通过插件将其连接起来使用示例非常容易。但是对于您的需要,@g00glen00b 的建议会很好用!! 我想对示例值做同样的事情。有可能吗?【参考方案2】:

以下是提供示例的解决方法:

将html注入swagger

@ApiParam(
    name="whatever",
    value="whatever",
    defaultValue="none</p><p>Example: xyz</p>"
)

他们在最新版本 2.9.2 中不提供保护。

【讨论】:

以上是关于MockMvc 和 Swagger UI 的示例的主要内容,如果未能解决你的问题,请参考以下文章

restful Api 风格契约设计器:Swagger-editor和swagger-ui的应用

无法让 springfox-swagger-ui 与 Spring MVC 一起使用

Spring Boot 集成 Swagger,再也不写接口文档了!

多响应正文示例取决于 OpenApi 3.0.0/Swagger 中的媒体类型

MockMVC的使用

Swagger-UI 和 Ktor 如何导入 swagger.json 或 .yaml 文件并启动 Swagger-UI?