spring-boot - Java swagger-ui 不呈现参数的允许值
问题描述
我有一个 SpringBoot、JAX-RS 和 Maven 应用程序。我正在使用 Swagger 注释来提供有关 REST 服务接口的信息。它基本上可以工作,但是我遇到了一些我期望一组有限值的参数的问题。我相信我正确地指定了“@Api ...”注释,并且我可以在 swagger.json 文件中看到预期的结果,但是 swagger-ui 似乎没有对这些信息做任何事情。
我的 pom.xml 似乎指定了 swagger 工件的 1.5.20 版本。
以下是从 Java 接口中大量省略的摘录:
@GET
@Path("...")
@ApiOperation("...")
@ApiImplicitParams({
...
@ApiImplicitParam(name = "poi_types", value = "Types of locations to include",
allowableValues = "pos, wifi, country",
dataType = "string", paramType = "query"),
...
})
public Object ...(@QueryParam(...)
@ApiParam(name = ..., value = "...")
String ...) {
在 swagger.json 中,我看到该条目的以下内容:
{
"name" : "poi_types",
"in" : "query",
"description" : "Types of locations to include",
"required" : false,
"type" : "string",
"enum" : [ "pos", "wifi", "country" ]
}
在生成的 UI 中,我看到以下内容:
我在某处看到过一些关于所需架构与 swagger-ui 呈现的内容之间可能存在脱节的提及,例如可能需要在参数定义中包含“类型”和“枚举”属性的“架构”元素。我尝试手动更改 swagger.json 以包含它,但没有任何区别。
任何人都可以在这里提供任何背景吗?
更新:
我升级到 swagger-core 和 swagger-annotations v1.6.2。我还尝试将“allowableValues”放入“@ApiParam”,而不仅仅是“@ApiImplicitParam”。这些变化都没有任何区别。我在 UI 中没有看到任何关于允许值的指示。
这是 @ApiParam 更改中的更改元素:
{
"name" : "isocc2",
"in" : "query",
"description" : "Country code",
"required" : false,
"type" : "string",
"enum" : [ "en", "es" ]
}
这就是它在 swagger UI 中的显示方式:
我还从浏览器验证了它加载的 swagger.json,它符合我的预期。
以防万一,我在 Chrome 和 Firefox 中对其进行了测试。
这里还有什么问题?
解决方案
你试过使用吗?
public Object ...(@QueryParam(...)
@ApiParam(name = ..., value = "...",
allowableValues = "pos, wifi, country",)
String poi_types) {
allowableValues
物业运作良好@ApiParam.
推荐阅读
- html - 为按钮制作事件?
- java - hazelcast 发现服务在 kubernetes openshift 源上的 serviceDns 失败
- c++ - 当函数参数是二维数组时,如何推断缺少模板参数
- ruby - 处理文件路径参数:没有将 nil 隐式转换为 String
- excel - VBA - Excel - 如何使用列表对象在单元格中编写公式而不是值
- testing - 如何使用 testcafe 进行客户端性能测试?
- asp.net-core - 请求标头中没有承载令牌
- azure - set-body 策略中的表达式不起作用
- php - 当值为空时使用 whereYear Laravel 查询生成器切换到其他字段
- c# - 组合框选定值在 GridView_CellClick 事件上变为“空”