SpringBoot接入Swagger及Swaggerui

Demo地址:https://gitee.com/pengld-demo/swagger-demo/

Maven依赖



    io.springfox
    springfox-swagger2
    2.9.2
    
        
            io.swagger
            swagger-models
        
    


    io.swagger
    swagger-models
    1.5.21


    io.swagger
    swagger-annotations
    1.5.21


    io.springfox
    springfox-swagger-ui
    2.9.2


    com.github.xiaoymin
    swagger-bootstrap-ui
    1.9.6

Swagger配置

package cn.pengld.swagger.config;

import com.google.common.base.Function;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.RequestHandler;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import java.util.ArrayList;
import java.util.List;

/**
 * 项目名称:apidoc
 *  设置 dev test 环境开启 prod 环境就关闭了
 */
@EnableWebMvc
@EnableSwagger2
@Configuration
//@Profile({"local", "dev", "fat", "uat", "prefive", "pre"})
public class SwaggerConfig extends WebMvcConfigurationSupport {
    @Value("${swagger.path}")
    private String swaggerPath;

    @Value("${spring.application.name}")
    private String applicationName;

    @Bean
    public Docket createRestApi() {
        //在配置好的配置类中增加此段代码即可
        ParameterBuilder ticketPar = new ParameterBuilder();
        List parameters = new ArrayList();

        //name表示名称,description表示描述
        //required表示是否必填,defaultvalue表示默认值
        ticketPar.name("ticket").description("ticket")
                .modelRef(new ModelRef("string")).parameterType("header")
                .required(false).build();

        parameters.add(ticketPar.build());

        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
                .apis(basePackage(swaggerPath))
                .paths(PathSelectors.any()).build().globalOperationParameters(parameters);
    }


    /**
     * api文档的详细信息函数,注意这里的注解引用的是哪个
     *
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title(!StringUtils.isEmpty(applicationName)?applicationName.toUpperCase() +"服务-API接口":"API接口")
                .version("1.0")
                .description("API-描述")
                .build();
    }

    
    public static Predicate basePackage(final String basePackage) {
        return input -> declaringClass(input).transform(handlerPackage(basePackage)).or(true);
    }

    private static Function, Boolean> handlerPackage(final String basePackage) {
        return input -> {
            // 循环判断匹配
            for (String strPackage : basePackage.split(",")) {
                boolean isMatch = input.getPackage().getName().startsWith(strPackage);
                if (isMatch) {
                    return true;
                }
            }
            return false;
        };
    }

    private static Optional<? extends Class<?>> declaringClass(RequestHandler input) {
        return Optional.fromNullable(input.declaringClass());
    }
}
package cn.pengld.swagger.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;


@Configuration
@EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer  {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
//        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
}

controller配置

package cn.pengld.swagger.web.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("/user")
@Api(value = "/user", tags = "用户相关接口")
public class UserController {

    @ApiOperation(value = "/getUserList", notes = "获取用户列表", httpMethod = "GET")
    @GetMapping(value = "/getUserList")
    public List getUserList(){
        List userList = new ArrayList();
        userList.add(new User(1L,"Jack"));
        return userList;
    }
}

@Data
@AllArgsConstructor
class User{
    @ApiModelProperty(value = "id", name = "id")
    Long id;

    @ApiModelProperty(value = "name", name = "name")
    String name;
}
SpringBoot接入Swagger及Swagger-bootstrap-ui

展开阅读全文

页面更新:2024-03-06

标签:详细信息   注解   函数   接口   名称   代码   文档   地址   环境   项目

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top