1.建立springboot項目
https://www.cnblogs.com/i-tao/p/8878562.html
這裡我們使用多環境配置:
- application-dev.yml(開發環境)
- application-test.yml(測試環境)
- application-uat.yml(預釋出)
- application-pro.yml(生産環境)
2.添加Swagger2依賴
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
2.1 啟動類開啟Swagger2
package com.tao.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication
@EnableSwagger2
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}
2.2 Swagger2配置類
package com.tao.springboot.util;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@Configuration
public class Swagger2 {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.tao.springboot.action"))//controller路徑
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("标題")
.description("描述")
.termsOfServiceUrl("位址")
.version("1.0")
.build();
}
}
2.3 開始在action裡面寫一個接口
package com.tao.springboot.action;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/says",method = RequestMethod.GET)
public class sayHello {
/**
* 根據使用者名說hello
* @param name
* @return
*/
@RequestMapping(value = "/hello",method = RequestMethod.GET)
public String hello(String name){
return name+" hello";
}
}
為了友善接口管理和維護,增加Swagger2注解:
- @Api:修飾整個類,描述Controller的作用
- @ApiOperation:描述一個類的一個方法,或者說一個接口
- @ApiParam:單個參數描述
- @ApiModel:用對象來接收參數
- @ApiProperty:用對象接收參數時,描述對象的一個字段
- @ApiResponse:HTTP響應其中1個描述
- @ApiResponses:HTTP響應整體描述
- @ApiIgnore:使用該注解忽略這個API
- @ApiError :發生錯誤傳回的資訊
- @ApiImplicitParam:一個請求參數
- @ApiImplicitParams:多個請求參數
package com.tao.springboot.action;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping(value = "/says",method = RequestMethod.GET)
public class sayHello {
/**
* 根據使用者名說hello
* @param name
* @return
*/
@ApiOperation(value="say hello", notes="根據url的name來say hello!")
@ApiImplicitParam(name = "name", value = "使用者名稱", required = true, dataType = "String", paramType = "path")
@RequestMapping(value = "/hello",method = RequestMethod.GET)
public String hello(String name){
return name+" hello";
}
}
通路:http://localhost:8081/swagger-ui.html
3.如果解決線上接口不被暴露?
3.1 使用springboot security過濾
略……
3.2 生産環境移除Swagger2
略……
3.3 直接使用多環境配置,生産環境不啟用Swagger2
application.yml檔案
spring:
profiles:
active: pro
application-pro.yml
#生産環境
server:
port: 8080
swagger2:
enable: false
2.2 Swagger2配置類增加
@Value("${swagger2.enable}")
private boolean swagger2Enable;
package com.tao.springboot.util;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@Configuration
public class Swagger2 {
@Value("${swagger2.enable}")
private boolean swagger2Enable;
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.enable(swagger2Enable)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.tao.springboot.action"))//controller路徑
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("标題")
.description("描述")
.termsOfServiceUrl("位址")
.version("1.0")
.build();
}
}
通路:http://localhost:8081/swagger-ui.html
通路:http://localhost:8080/swagger-ui.html
github位址:https://github.com/80905949/springbootswagger2.git
---------------------
作者:緣故為何
來源:CNBLOGS
原文:https://www.cnblogs.com/i-tao/p/10548181.html
版權聲明:本文為作者原創文章,轉載請附上博文連結!
内容解析By:CSDN,CNBLOG部落格文章一鍵轉載插件