SpringBoot整合swagger以及swagger的運用
阿新 • • 發佈:2019-01-31
swagget需要的包:
早springBoot的入口main方法中配置@EnableSwagger2註解<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.5.0</version> </dependency>
在Controll中增加swagger的api註解@EnableSwagger2 @SpringBootApplication @EnableFeignClients @EnableDiscoveryClient @EnableCaching public class SystemApp { private static ConfigurableApplicationContext ctx; public static void main(String[] args) { ctx = SpringApplication.run(SystemApp.class, args); } public static void showBeans() { String[] beanNames = ctx.getBeanDefinitionNames(); Arrays.sort(beanNames); for (String beanName : beanNames) { System.out.println(beanName); } } }
@Api("任務管理-介面") @RestController @RequestMapping(path="/test) public class Controller { @ApiOperation(value="分頁查詢任務") @RequestMapping(path="/page", method=RequestMethod.POST) public Response page(@ModelAttribute final Condition condition) { } @ApiOperation("根據id查詢任務") @RequestMapping(path="/findOne/{id}", method=RequestMethod.GET) @ResponseBody public Response findById(@PathVariable final Long id) { }
使用eclipse的run as重新啟動Application的main函式
即可檢視UserControll中暴漏的介面
其他補充:
/**
* Swagger2配置類
* 在與spring boot整合時,放在與Application.java同級的目錄下。
* 通過@Configuration註解,讓Spring來載入該類配置。
* 再通過@EnableSwagger2註解來啟用Swagger2。
*/
@Configuration
@EnableSwagger2
public class Swagger2 {
/**
* 建立API應用
* apiInfo() 增加API相關資訊
* 通過select()函式返回一個ApiSelectorBuilder例項,用來控制哪些介面暴露給Swagger來展現,
* 本例採用指定掃描的包路徑來定義指定要建立API的目錄。
*
* @return
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("package")) //swagget掃描目錄
.paths(PathSelectors.any())
.build();
}
/**
* 建立該API的基本資訊(這些基本資訊會展現在文件頁面中)
* 訪問地址:http://專案實際地址/swagger-ui.html
* @return
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring Boot中使用Swagger2構建RESTful APIs")
.description("更多請關注http://www.baidu.com")
.termsOfServiceUrl("http://www.baidu.com")
.contact("sunf")
.version("1.0")
.build();
}
}
靈活配置:
和上面對
1、加上了方法名字、屬性名、提示方便閱讀理解
2、不用直接傳物件,引數一個個配置簡單明瞭,選擇需要不需要都可
@Api(tags= "系統安全-角色管理", description="RoleController")
@RestController
public class RoleController {
@ApiOperation(value="根據id查詢角色(並封裝屬性選單許可權)")
@RequestMapping(value="sys/security/role/{id}", method=RequestMethod.GET)
public Response getById(@ApiParam(value="角色id", required=true) @PathVariable final Long id) {
}
@ApiOperation(value="分頁複合查詢角色")
@RequestMapping(value="sys/security/role", method=RequestMethod.POST)
public Response page(
@ApiParam(value="角色名稱", required=false) @RequestParam(required=false) final String name,
@ModelAttribute final QueryCondition condition) {
}
@ApiOperation(value="儲存角色(新增/修改)")
@RequestMapping(value="sys/security/role", method=RequestMethod.PUT)
public Response save(
@ApiParam(value="角色id,修改時必須輸入") @RequestParam(required=false) final Long id,
@ApiParam(value="角色名稱") @RequestParam final String name,
@ApiParam(value="角色名稱") @RequestParam(required=false) final String description,
@ApiParam(value="角色擁有的選單id,多個用半形逗號隔開") @RequestParam final Long[] menuIds) {
}
@ApiOperation(value="刪除角色")
@RequestMapping(value="sys/security/role/{id}", method=RequestMethod.DELETE)
public Response save(@ApiParam(value="角色id", required=true) @PathVariable final Long id) {
}
}
如果請求引數是實體,可以在實體欄位上新增@ApiModelProperty(value="") 註解,用來解釋說明欄位