SpringBoot整合Swagger2的步驟詳解
簡(jiǎn)介
swagger是一個(gè)流行的API開發(fā)框架,這個(gè)框架以“開放API聲明”(OpenAPI Specification,OAS)為基礎(chǔ), 對(duì)整個(gè)API的開發(fā)周期都提供了相應(yīng)的解決方案,是一個(gè)非常龐大的項(xiàng)目(包括設(shè)計(jì)、編碼和測(cè)試,幾乎支持所有語言)。
springfox大致原理:
springfox的大致原理就是,在項(xiàng)目啟動(dòng)的過種中,spring上下文在初始化的過程, 框架自動(dòng)跟據(jù)配置加載一些swagger相關(guān)的bean到當(dāng)前的上下文中,并自動(dòng)掃描系統(tǒng)中可能需要生成api文檔那些類, 并生成相應(yīng)的信息緩存起來。如果項(xiàng)目MVC控制層用的是springMvc那么會(huì)自動(dòng)掃描所有Controller類,并生成對(duì)應(yīng)的文檔描述數(shù)據(jù).該數(shù)據(jù)是json格式,通過路徑:項(xiàng)目地址/ v2/api-docs可以訪問到該數(shù)據(jù),然后swaggerUI根據(jù)這份數(shù)據(jù)生成相應(yīng)的文檔描述界面。 因?yàn)槲覀兡苣玫竭@份數(shù)據(jù),所以我們也可以生成自己的頁面.
SpringBoot整合Swagger2
引入依賴
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.7.0</version> </dependency>
注意:jdk1.8以上才能運(yùn)行swagger2
編寫配置類配置Swagger
@Configuration @EnableSwagger2 public class SwaggerConfig{ @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("org.example.yourproject"))//這里填寫項(xiàng)目package .paths(PathSelectors.any()) .build(); }//springfox為我們提供了一個(gè)Docket(摘要的意思)類,我們需要把它做成一個(gè)Bean注入到spring中, 顯然,我們需要一個(gè)配置文件,并通過一種方式(顯然它會(huì)是一個(gè)注解)告訴程序,這是一個(gè)Swagger配置文件。 private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Spring Boot中使用Swagger2構(gòu)建RESTful API") .description("rest api 文檔構(gòu)建利器") .termsOfServiceUrl("https://www.cnblogs.com/yrxing/") .contact("xing") .version("1.0") .build(); } }//springfox允許我們將信息組合成一個(gè)ApiInfo的類,作為構(gòu)造參數(shù)傳給Docket
訪問:http://localhost:{your_server_port}/swagger-ui.html
Swagger2常用注解使用
@Api()、@ApiOperation()
@RestController @RequestMapping(value = "/user", produces = APPLICATION_JSON_VALUE) //配置返回值 application/json @Api(tags = "用戶管理") public class HelloController { ArrayList<User> users = new ArrayList<>(); @ApiOperation(value = "獲取用戶列表", notes = "獲取所有用戶信息") @RequestMapping(value = {""}, method = RequestMethod.GET) public List<User> hello() { users.add(new User("邏輯", "luoji")); users.add(new User("葉文杰", "yewenjie")); return users; } }
@ApiModel()、@ApiModelProperty()
@ApiModel(description = "用戶",value = "用戶") public class User { private String id; @ApiModelProperty(value = "用戶名")//value屬性指明了該字段的含義(描述 Description) private String username; @ApiModelProperty(hidden = true)//此注解可以作用在字段或者方法上,只要 hidden 屬性為 true ,該字段或者方法就不會(huì)被生成api文檔. private String password; private String email; private Integer age; private Boolean enabled; }
@ApiParam()
@ApiOperation(value = "獲取用戶詳細(xì)信息", notes = "根據(jù)url的id來獲取用戶詳細(xì)信息") @RequestMapping(value = "getUser/{id}", method = RequestMethod.GET) public User getUser(@ApiParam(naeme = "id",value = "用戶id", required = true) @PathVariable(value = "id") String id) { return new User(id, "itguang", "123456"); }//@ApiParam這個(gè)注解,需要注意的是,這個(gè)注解方法的參數(shù)前面,不能直接用在方法上面.
@ApiImplicitParams()、@ApiImplicitparam()
··· @Api("測(cè)試用例1") @Controller public class swaggerTestUse(){ @ApiOperation(value = "apiOperationSwaggerTest", notes = "apiOperationSwagger測(cè)試") @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "id入?yún)?, required = true, dataType = "Integer", paramType = "query"), @ApiImplicitParam(name = "brand", value = "brand", required = true, dataType = "BRAND", paramType = "body") }) public void apiOperationSwaggerTest(Integer id, Brand band){ } }
以上就是SpringBoot整合Swagger2的步驟詳解的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot整合Swagger2的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Springmvc中的轉(zhuǎn)發(fā)重定向和攔截器的示例
本篇文章主要介紹了Springmvc中的轉(zhuǎn)發(fā)重定向和攔截器的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-05-05Java中YYYY-MM-dd與yyyy-MM-dd的區(qū)別及跨年問題
YYYY-MM-dd可能會(huì)導(dǎo)致跨年周的日期被歸屬到錯(cuò)誤的年份, yyyy-MM-dd總是表示實(shí)際的日歷年份,無論日期所在的周是否跨年,本文就來介紹一下兩者的區(qū)別,感興趣的可以了解一下2024-01-01Java使用動(dòng)態(tài)規(guī)劃算法思想解決背包問題
背包問題(Knapsack problem)是一種組合優(yōu)化的NP完全問題。問題可以描述為:給定一組物品,每種物品都有自己的重量和價(jià)格,在限定的總重量?jī)?nèi),我們?nèi)绾芜x擇,才能使得物品的總價(jià)格最高2022-04-04解決出現(xiàn) java.lang.ExceptionInInitializerError錯(cuò)誤問題
這篇文章主要介紹了解決出現(xiàn) java.lang.ExceptionInInitializerError錯(cuò)誤問題的相關(guān)資料,需要的朋友可以參考下2017-01-01Maven項(xiàng)目中resources配置總結(jié)
這篇文章主要介紹了Maven項(xiàng)目中resources配置總結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03spring事務(wù)的propagation傳播屬性示例詳解
這篇文章主要為大家介紹了spring事務(wù)的propagation傳播屬性示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09java程序運(yùn)行時(shí)內(nèi)存分配詳解
這篇文章主要介紹了java程序運(yùn)行時(shí)內(nèi)存分配詳解 ,需要的朋友可以參考下2016-07-07