我有一个 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 呈现的内容之间可能存在脱节,例如可能需要在参数定义中包含“type”和“enum”属性的“schema”元素。我尝试手动更改 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,它符合我的预期。
为了以防万一,除了 Firefox 之外,我还在 Chrome 中测试了它。
这里还有什么问题吗?
您尝试过使用吗?
public Object ...(@QueryParam(...)
@ApiParam(name = ..., value = "...",
allowableValues = "pos, wifi, country",)
String poi_types) {
allowableValues
属性在 @ApiParam.
上运行良好