Swagger使用 配置总结(统一 头部信息,content-type配置, 分组 等功能)

版本

    def swagger2_version = "2.9.2"
    implementation("io.springfox:springfox-swagger2:$swagger2_version")
    //implementation("io.springfox:springfox-swagger-ui:$swagger2_version")
    implementation("com.github.xiaoymin:swagger-bootstrap-ui:1.9.6")//第三方的ui

Swagger2Config

@EnableSwagger2
@Configuration
@Profile({"develop", "test"})
public class Swagger2Config implements WebMvcConfigurer {
	//配置拦截器不拦截的路径, 根目录以及其他特定开发功能路径
	@Bean(name = "excludePath")
	public List<String> swaggerPathPattern() {
		return Lists.newArrayList("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**", "/api-docs");
	}

			
    //配置swagger信息的ApiInfo
    private ApiInfo apiInfo(){
        //作者的联系方式
        return new ApiInfoBuilder()
				.title("aaaak  hello")
				.description("Restful API")
				.contact(new Contact("aaaak", "https://www.baidu.com", "1111111@qq.com"))
				.version("1.0")
				.build();
    }

	//配置content type
	private static final Set<String> DEFAULT_PRODUCES_AND_CONSUMES =
			new HashSet<String>(Arrays.asList("application/json","application/xml")); 
	// 根据 docket 配置多个 分组		
	@Bean()
	public Docket baseDocket() {
		return new Docket(DocumentationType.SWAGGER_2)
				.apiInfo(apiInfo)
				.consumes(DEFAULT_PRODUCES_AND_CONSUMES)
				.produces(DEFAULT_PRODUCES_AND_CONSUMES)
				.globalOperationParameters(globalOperationParameters())
				.useDefaultResponseMessages(false)
				.select()
				.apis(RequestHandlerSelectors.withClassAnnotation(Controller.class))//根据注解Controller 找接口
				.paths(PathSelectors.any())//全路径的 接口
				.build();
	}
	@Bean()
	public Docket docket2() {
		return new Docket(DocumentationType.SWAGGER_2)
				.apiInfo(apiInfo)
				.consumes(DEFAULT_PRODUCES_AND_CONSUMES)
				.produces(DEFAULT_PRODUCES_AND_CONSUMES)
				.ignoredParameterTypes(Error.class)// 忽略 指定参数
				.groupName("调查问卷模块") //分组
				.globalOperationParameters(globalOperationParameters())
				.useDefaultResponseMessages(false)
				.select()
				.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
				.paths(PathSelectors.ant("/api/**"))//筛选指定路径下的 接口到指定分组
				.build();
	}
	//配置请求 接口文档路径
	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/").setCacheControl(CacheControl.noCache());
		registry.addResourceHandler("/webjars/**")
				.addResourceLocations("classpath:/META-INF/resources/webjars/")
				.setCacheControl(CacheControl.noCache());
	}

	/**
	 * 所有请求都添加的统一参数(或者头)信息
	 * @return
	 */
	private List<Parameter> globalOperationParameters() {
		List<Parameter> pars = new ArrayList<>();
		pars.add(new ParameterBuilder().name("_Device").defaultValue("861925033630951").description("设备唯一标识")
				.hidden(true).parameterType("header").modelRef(new ModelRef("string")).build());

		pars.add(new ParameterBuilder().name("_Hardware").defaultValue("HUAWEI_JDN-AL00").description("设备号")
				.hidden(true).parameterType("header").modelRef(new ModelRef("string")).build());

		pars.add(new ParameterBuilder().hidden(true).name("_OS").defaultValue("Android-23").description("平台类型")
				.hidden(true).parameterType("header").modelRef(new ModelRef("string")).build());

		pars.add(new ParameterBuilder().hidden(true).name("_Channel").defaultValue("rtm").description("请求渠道")
				.hidden(true).parameterType("header").modelRef(new ModelRef("string")).build());

		pars.add(new ParameterBuilder().hidden(true).name("_Timestamp").defaultValue(String.valueOf(System.currentTimeMillis())).description("时间戳")
				.hidden(true).parameterType("header").modelRef(new ModelRef("string")).build());

		pars.add(new ParameterBuilder().hidden(true).name("_AppName").defaultValue("com.microcardio.wxdoctor").description("客户端名字")
				.hidden(true).parameterType("header").modelRef(new ModelRef("string")).build());

		pars.add(new ParameterBuilder().hidden(true).name("_AppVersion").defaultValue("4060").description("客户端版本")
				.hidden(true).parameterType("header").modelRef(new ModelRef("string")).build());

		pars.add(new ParameterBuilder().name("_User").defaultValue("22525").description("请求医生id")
				.parameterType("header").modelRef(new ModelRef("string")).build());

		pars.add(new ParameterBuilder().name("_Hospital").defaultValue("12").description("医院id")
				.parameterType("header").modelRef(new ModelRef("string")).build());
		return pars;
	}

}

Controller 使用

@RestController
@RequestMapping("/api")
@Api(tags = "问卷服务")
public class TestController {
    @RequestMapping(value = "/test", method = RequestMethod.GET)
    @ApiOperation(value = "基础问卷", notes = "基础问卷!!!!!!!!!!!!!!!", response = TestDto.class)
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "int", name = "id", value = "类型 1,2,3,4,", required = true, defaultValue = "1"),
    })
    public String test(@RequestParam(name = "id") Integer id) {
        return " hello api"+id;
    }
}

DTO 使用

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "BaseDto对象", description = "问卷 base基本表 ")
public class BaseDto {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键")
    private Integer id;

    @ApiModelProperty(value = "患者姓名",example="aaaak")
    private String patientName;

    @ApiModelProperty(value = "患者身份证")
    private String identityCard;

    @ApiModelProperty(value = "添加时间")
    private Long createTime;

    @ApiModelProperty(value = "修改时间")
    private Long modifiedTtime;

    @ApiModelProperty(value = "关联医生id")
    private Integer createId;

    @ApiModelProperty(value = "问卷状态 ,1开启 ,2关闭")
    private Integer state;
}

原ui 与第三方 ui对比

在这里插入图片描述
在这里插入图片描述

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值