swagger搭建(基於springBoot)詳解


  前后端分離后,api接口文檔的維護就成了一個讓人頭疼的問題,api接口更新慢,或因開發工作量大,沒時間整理文檔,導致前后端分離后前端同學和后端同 學都糾結於文檔的問題。而swagger的出現,不亞於一道曙光,功能強大,ui簡潔美觀,提供在線測試,不能說完美,但基本上解決了文檔的問題

       本此搭建是基於springBoot項目,希望對大家有幫助

 

官方網站為:http://swagger.io/

步驟1.maven

在maven的pom文件中引入相關的依賴

 

    <dependency>  
        <groupId>io.springfox</groupId>  
        <artifactId>springfox-swagger2</artifactId>  
        <version>2.2.2</version>  
    </dependency>  
    <dependency>  
        <groupId>io.springfox</groupId>  
        <artifactId>springfox-swagger-ui</artifactId>  
        <version>2.2.2</version>  
    </dependency>  

 

 步驟2.配置Swagger的配置文件

    import java.util.ArrayList;  
    import java.util.List;  
      
    import org.springframework.context.annotation.Bean;  
    import org.springframework.context.annotation.Configuration;  
      
    import springfox.documentation.builders.ParameterBuilder;  
    import springfox.documentation.builders.ApiInfoBuilder;  
    import springfox.documentation.builders.PathSelectors;  
    import springfox.documentation.builders.RequestHandlerSelectors;  
    import springfox.documentation.schema.ModelRef;  
    import springfox.documentation.service.ApiInfo;  
    import springfox.documentation.spi.DocumentationType;  
    import springfox.documentation.spring.web.plugins.Docket;  
    import springfox.documentation.swagger2.annotations.EnableSwagger2;  
    import springfox.documentation.service.Parameter;  
    @Configuration  
    @EnableSwagger2  
    public class Swagger2 {  
      
        @Bean  
        public Docket createRestApi() {  
            ParameterBuilder tokenPar = new ParameterBuilder();    
            List<Parameter> pars = new ArrayList<Parameter>();    
            tokenPar.name("token").description("令牌")  
            .modelRef(new ModelRef("string")).parameterType("query").required(false).build();    
            pars.add(tokenPar.build());    
            return new Docket(DocumentationType.SWAGGER_2)  
                    .apiInfo(apiInfo())  
                    .select()  
                    .apis(RequestHandlerSelectors.basePackage("com.sst"))  
                    .paths(PathSelectors.any())  
                    .build().globalOperationParameters(pars)  ;  
        }  
      
        @SuppressWarnings("deprecation")  
        private ApiInfo apiInfo() {  
            return new ApiInfoBuilder()  
                    .title("個人測試")  
                    .description("個人測試用api")  
                    .termsOfServiceUrl("http://blog.csdn.net/penyoudi1")  
                    .contact("測試")  
                    .version("1.0")  
                    .build();  
        }  
      
    }  

 

 步驟3.在Controller中引入注解

 

    import org.springframework.web.bind.annotation.RequestMapping;  
    import org.springframework.web.bind.annotation.RestController;  
      
    import io.swagger.annotations.Api;  
    import io.swagger.annotations.ApiImplicitParam;  
    import io.swagger.annotations.ApiImplicitParams;  
    import io.swagger.annotations.ApiOperation;  
      
    @RestController    
    @RequestMapping("test")   
    @Api(value="測試接口Controller")  
    public class TestController {  
      
        @ApiOperation(value="測試用接口", notes="測試用接口" ,httpMethod="POST")  
        @ApiImplicitParams({  
            @ApiImplicitParam(name="name", value="用戶姓名", dataType = "String", required=true, paramType="form"),  
            @ApiImplicitParam(name="id", value="id", dataType = "int", required=false, paramType="form")  
        })  
        @RequestMapping("word")    
        public String HelloWord(String name,Integer id) {    
            return "Hello Word";    
        }  
          
          
    }  

 

然后輸入地址  http://127.0.0.1:8080/SpringSwaggerTest/swagger-ui.html

可以查看到

可以查看到

     看到這個頁面,說明配置成功!!

以上就是swagger基於springBoot的配置方法,下面詳細說一下具體的參數

swagger配置文件說明
    ParameterBuilder tokenPar = new ParameterBuilder();    
            List<Parameter> pars = new ArrayList<Parameter>();    
            tokenPar.name("token").description("令牌")  
            .modelRef(new ModelRef("string")).parameterType("query").required(false).build();    
            pars.add(tokenPar.build());  

這段代碼是默認參數,添加上后,所有的接口都會有一個公共參數,不需要在每個接口單獨配置 [java]

    .apis(RequestHandlerSelectors.basePackage("com.sst"))  
    1. .apis(RequestHandlerSelectors.basePackage("com.sst")) 
    return new ApiInfoBuilder()  
            .title("個人測試")  
            .description("個人測試用api")  
            .termsOfServiceUrl("http://blog.csdn.net/penyoudi1")  
            .contact("測試")  
            .version("1.0")  
            .build();  

這個是一些頁面展示數據的配置,用於標題,分組說明等

controller注解說明
    @Api(value="測試接口Controller")  

這個注解用於整個類上,對整個類中的接口列表進行簡單說明

    @ApiOperation(value="測試用接口", notes="測試用接口" ,httpMethod="POST")  

 

    @ApiOperation(value="測試用接口", notes="測試用接口" ,httpMethod="POST")  

 

    @ApiImplicitParams({  
            @ApiImplicitParam(name="name", value="用戶姓名", dataType = "String", required=true, paramType="form"),  
            @ApiImplicitParam(name="id", value="id", dataType = "int", required=false, paramType="form")  
        })  

@ApiImplicitParams是傳入參數的集合,里面可以包含多個參數

@ApiImplicitParam(name="name", value="用戶姓名", dataType = "String", required=true, paramType="form"),

name是參數的名稱,value是參數的說明,dataType是參數的類型,前端不是限制,僅做說明使用,required true時是必傳參數,false是選填參數。paramType是提交方式=-= 好像都是寫的from

以上就是基本的使用的參數說明

問題

1.在開發中遇到過,使用swagger做excel導出中文亂碼的問題,尚未解決,如果你也遇到了,可以單獨訪問下接口,嘗試下是否是swagger本身的問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM