SpringBoot之springfox(Swagger) (ApiDoc接口文檔)


Springfox的前身是swagger-springmvc,是一個開源的API doc框架,可以將我們的Controller的方法以文檔的形式展現,基於Swagger。

官網地址:http://springfox.github.io/springfox/

1.maven依賴

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

 

2.配置

package com.example; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.context.request.async.DeferredResult; import springfox.documentation.builders.PathSelectors; import springfox.documentation.service.ApiInfo; import springfox.documentation.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 @SpringBootApplication public class DemoApplication {     public static void main(String[] args) {         SpringApplication.run(DemoApplication.class, args);     }     @Bean     public Docket testApi() {         return new Docket(DocumentationType.SWAGGER_2)                 .groupName("test")                 .genericModelSubstitutes(DeferredResult.class)                 //.genericModelSubstitutes(ResponseEntity.class)                 .useDefaultResponseMessages(false)                 .forCodeGeneration(true)                 .pathMapping("/test")//api測試請求地址                 .select()                 .paths(PathSelectors.regex("/common/.*"))//過濾的接口                 .build()                 .apiInfo(testApiInfo());     }     @Bean     public Docket demoApi() {         return new Docket(DocumentationType.SWAGGER_2)                 .groupName("demo")                 .genericModelSubstitutes(DeferredResult.class)                 //  .genericModelSubstitutes(ResponseEntity.class)                 .useDefaultResponseMessages(false)                 .forCodeGeneration(false)                 .pathMapping("/")                 .select()                 .paths(PathSelectors.regex("/comm.*"))//過濾的接口                 .build()                 .apiInfo(demoApiInfo());     }     private ApiInfo testApiInfo() {         Contact contact = new Contact("王念", "http://my.oschina.net/wangnian", "2251181679@qq.com");         ApiInfo apiInfo = new ApiInfo("某API接口",//大標題                 "REST風格API",//小標題                 "0.1",//版本                 "www.baidu.com",                 contact,//作者                 "主頁",//鏈接顯示文字                 ""//網站鏈接         );         return apiInfo;     }     private ApiInfo demoApiInfo() {         Contact contact = new Contact("王念", "http://my.oschina.net/wangnian", "2251181679@qq.com");         ApiInfo apiInfo = new ApiInfo("某API接口",//大標題                 "REST風格API",//小標題                 "0.1",//版本                 "www.baidu.com",                 contact,//作者                 "主頁",//鏈接顯示文字                 ""//網站鏈接         );         return apiInfo;     } }

 

3.restful注解描述

package com.example.demo; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; /**  * Created by 王念 on 2016/4/25.  */ @RestController @RequestMapping("comm/") public class Controller {     /**      * 簡單接口描述      *      * @param userName      * @return      */     @RequestMapping(value = "/demo1", method = RequestMethod.POST)     @ApiOperation(value = "測試接口1", notes = "簡單接口描述 userName必填", code = 200, produces = "application/json")     public ModelMap getDemo(@RequestParam("userName") String userName) {         ModelMap map = new ModelMap();         map.addAttribute("userName", userName);         return map;     }     /**      * 參數描述      *      * @param userName      * @return      */     @RequestMapping(value = "/demo2/{userName}", method = RequestMethod.POST)     @ApiOperation(value = "測試接口2", notes = "參數描述", code = 200, produces = "application/json")     public ModelMap getDemo2(@ApiParam(name = "userName", value = "編號", required = true) @PathVariable("userName") String userName) {         ModelMap map = new ModelMap();         map.addAttribute("userName", userName);         return map;     }     /**      * 接受對象      *      * @return      */     @RequestMapping(value = "/demo3", method = RequestMethod.POST)     @ApiOperation(value = "測試接口3", notes = "接受對象", code = 200, produces = "application/json")     public ModelMap getDemoa(@RequestBody User user) {         ModelMap map = new ModelMap();         map.addAttribute("result", user);         return map;     }     @ApiIgnore //使用這個注解忽略這個接口     @RequestMapping(value = "/demo4", method = RequestMethod.POST)     public ModelMap getDemob(@RequestParam String content) {         ModelMap map = new ModelMap();         map.addAttribute("result", new java.util.Date());         return map;     } }

訪問http://localhost:8080/swagger-ui.html 就能看到

notes里 換行用  </br> HMLT的標簽就行了,哈哈哈哈

http://my.oschina.net/wangnian/blog/666017


免責聲明!

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



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