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
属性example
和examples
不起作用(请参阅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 中的媒体类型
Swagger-UI 和 Ktor 如何导入 swagger.json 或 .yaml 文件并启动 Swagger-UI?