You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:39:02