一:简介

swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 restful 风格的 web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许api来始终保持同步。swagger 让部署管理和使用功能强大的api从未如此简单。

二:集成swagger

1.引入pom.xml文件包(导入4个jar包)

注意:jdk1.8以上才能运行swagger2

<!--swagger-->
	 <dependency>
	     <groupid>io.springfox</groupid>
	     <artifactid>springfox-swagger2</artifactid>
	     <version>2.8.0</version>
	 </dependency>
	 <!--swagger-ui-->
	 <dependency>
	     <groupid>io.springfox</groupid>
	     <artifactid>springfox-swagger-ui</artifactid>
	     <version>2.8.0</version>
	 </dependency>
	 <!--swagger-ui增强-->
	 <dependency>
	     <groupid>com.github.xiaoymin</groupid>
	     <artifactid>knife4j-spring-boot-starter</artifactid>
	     <version>2.0.4</version>
	 </dependency>
	 <!--swagger-xml bind-->
	 <dependency>
	     <groupid>javax.xml.bind</groupid>
	     <artifactid>jaxb-api</artifactid>
	     <version>2.3.0</version>
	 </dependency>

2.要想使用swagger,必须编写一个配置类来配置 swagger,这里的配置类如下

@configuration
@enableswagger2
public class swaggerconfig {
    private string title = "标题..";
    private string description = "";
    private string termsofserviceurl = "";
    private string version = "版本号..";

    @bean
    public docket createdefaultrestapi() {
        return new docket(documentationtype.swagger_2).apiinfo(apiinfo()).select()
                .apis(requesthandlerselectors.withclassannotation(api.class))
                .apis(requesthandlerselectors.withmethodannotation(apioperation.class)).paths(pathselectors.any())
                .build().groupname("default").securityschemes(securityschemes()).securitycontexts(securitycontexts());
    }

    @bean
    public docket createtestrestapi() {
        return new docket(documentationtype.swagger_2).apiinfo(apiinfo()).select()
                .apis(requesthandlerselectors.withclassannotation(api.class))
                .apis(requesthandlerselectors.withmethodannotation(apioperation.class))
                .paths(pathselectors.ant("/test/**")).build().groupname("测试/调试").securityschemes(securityschemes())
                .securitycontexts(securitycontexts());
    }

    private apiinfo apiinfo() {
        return new apiinfobuilder().title(title).description(description).termsofserviceurl(termsofserviceurl)
                .version(version).build();
    }

    private list<securityreference> defaultauth() {
        authorizationscope authorizationscope = new authorizationscope("global", "accesseverything");
        authorizationscope[] authorizationscopes = new authorizationscope[1];
        authorizationscopes[0] = authorizationscope;
        return newarraylist(new securityreference("token", authorizationscopes));
    }

    private list<securitycontext> securitycontexts() {
        return newarraylist(securitycontext.builder().securityreferences(defaultauth())
                .forpaths(pathselectors.regex("^(?!auth).*$")).build());
    }

    private list<apikey> securityschemes() {
        return newarraylist(new apikey("token", "token", "header"));
    }
}

3.集成restful风格接口示例

@api(tags = "测试")
@restcontroller
public class testcontroller {

    @apioperation("get方法")
    @getmapping("getinfo")
    public void getinfo(){
       
    }
}

4.控制台打印路径地址(可选配置

@slf4j
@springbootapplication
public class springbootapplication implements applicationrunner {

    public static void main(string[] args) {
        springapplication.run(springbootapplication.class, args);
    }

    @autowired
    environment environment;

    @override
    public void run(applicationarguments args) throws exception {
        log.info("项目已启动,端口:" + environment.getproperty("local.server.port"));
        log.info("swagger文档地址:http://localhost:" + environment.getproperty("local.server.port") + "/swagger-ui.html");
        log.info("swagger文档地址:http://localhost:" + environment.getproperty("local.server.port") + "/doc.html");
    }
}

二:配置运用swagger

1.http://ip:port/swagger-ui.html

http://ip:port/doc.html

到此这篇关于详解java如何集成swagger组件的文章就介绍到这了,更多相关java集成swagger内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!