Spring Boot下Springfox 3.0.0 Swagger UI字符串数组入参格式配置咨询
解决方案
方法1:全局配置(推荐,一次性适配所有数组查询参数)
在你的Swagger配置类中添加自定义拦截规则,统一把所有查询类型的数组参数集合格式设为multi,不需要逐个参数调整:
import org.springframework.stereotype.Component; import springfox.documentation.schema.CollectionFormat; import springfox.documentation.service.ParameterType; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spi.service.ParameterBuilderPlugin; import springfox.documentation.spi.service.contexts.ParameterContext; import springfox.documentation.swagger.common.SwaggerPluginSupport; import java.util.Collection; @Component public class QueryArrayParameterBuilderPlugin implements ParameterBuilderPlugin { @Override public void apply(ParameterContext context) { // 仅匹配查询参数、且类型为集合/数组的场景 if (context.parameterType().equals(ParameterType.QUERY) && Collection.class.isAssignableFrom(context.resolvedMethodParameter().getParameterType().getErasedType())) { context.requestParameterBuilder() .query(q -> q.collectionFormat(CollectionFormat.MULTI)); } } @Override public boolean supports(DocumentationType delimiter) { return SwaggerPluginSupport.pluginDoesApply(delimiter); } }
方法2:单个参数单独配置
如果只需要调整个别参数,不需要全局生效,直接修改UserDto里的字段注解即可:
public class UserDto { // 新增allowMultiple和collectionFormat属性 @ApiModelProperty(dataType = "List", allowMultiple = true, collectionFormat = "multi") private List<String> userId; }
该配置仅对当前标注的字段生效,其他数组参数不会受影响。
配置验证
重启项目后打开swagger-ui,找到对应接口填入多个userId参数值,点击执行后查看请求URL,会自动生成userId=value1&userId=value2&userId=value3格式的传参,和2.9.2版本逻辑完全一致。
内容的提问来源于stack exchange,提问作者zy_sun
相关产品推荐
相关产品推荐

