swagger springfox-如何为查询参数列表生成schema类型数组< string>

bwntbbo3  于 2021-07-23  发布在  Java
关注(0)|答案(0)|浏览(426)

我使用的是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"
      }
   },
   ...
]

有谁比这更幸运吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题