我使用的是springfox3.0.0版本和oas注解。
我需要在swagger json中为我的方法生成如下片段(使用模式类型数组):
"parameters":[
{
"name":"ids",
"in":"query",
"description":"multiple ids",
"required":true,
"schema":{
"uniqueItems":true,
"type":"array",
"items":{
"type":"string"
}
}
},
...
]
在swagger ui中生成所需的参数组件:
但是,我无法使用任何可用的swagger注解获得这个swagger json(以及参数的swagger ui外观)。目前,我的控制器中有这样的代码(顺便说一句,这就像springdoc库的魅力,我们在迁移到springfox之前就已经使用了这个库):
import io.swagger.annotations.Api;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
@Api
@RestController
@RequestMapping("/something")
@RequiredArgsConstructor
public class MyController {
@Operation(summary = "Return list of...")
@ApiResponse(responseCode = "200", description = "Success")
@GetMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public List<SomeDTO> getSomethingByIds(@Parameter(description = "List of ids") @RequestParam("ids") Set<String> ids) {
...
}
但我也尝试过设置 io.swagger.v3.oas.annotations.Parameter
手动注解(如 @Parameter(description = "List of ids", content = @Content(array = @ArraySchema(schema = @Schema(implementation = String.class))))
).
还尝试了使用更老的(非oas)招摇式注解(如 io.swagger.annotations.ApiImplicitParam
或者 io.swagger.annotations.ApiParam
.
也尝试过改变 Set<String>
键入到 List<String>
或者 String[]
.
这两种方法都不成功,不管我做了什么尝试,springfox总是生成这样的swagger json片段(使用模式类型string),因此只在swagger ui中输入简单的字符串:
"parameters":[
{
"name":"ids",
"in":"query",
"description":"List of ids",
"required":true,
"style":"form",
"explode":true,
"schema":{
"type":"string"
}
},
...
]
有谁比这更幸运吗?
暂无答案!
目前还没有任何答案,快来回答吧!