集成swagger
儀隴網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
pom包配置
io.springfox springfox-swagger2 2.9.2 io.springfox springfox-swagger-ui ${swagger.version}
添加Swagger配置文件
@Configuration @EnableSwagger2 public class SwaggerConfig { /** * 創(chuàng)建一個Docket對象 * 調(diào)用select()方法, * 生成ApiSelectorBuilder對象實例,該對象負責(zé)定義外漏的API入口 * 通過使用RequestHandlerSelectors和PathSelectors來提供Predicate,在此我們使用any()方法,將所有API都通過Swagger進行文檔管理 * @return */ @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.any()) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() //標題 .title("Spring Boot中使用Swagger2構(gòu)建RESTful APIs") //簡介 .description("") //服務(wù)條款 .termsOfServiceUrl("") //作者個人信息 .contact(new Contact("chenguoyu","","chenguoyu_sir@163.com")) //版本 .version("1.0") .build(); } }
如果不想將所有的接口都通過swagger管理的話,可以將RequestHandlerSelectors.any()
修改為RequestHandlerSelectors.basePackage()
配置靜態(tài)訪問資源
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // 解決 swagger-ui.html 404報錯 registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); } }
到這里為止swagger就已經(jīng)配置完了,可以啟動項目,然后訪問如下鏈接即可http://localhost:9000/swagger...
端口號applicationContext中設(shè)置的端口號。
集成swagger-bootstrap-ui
由于個人感覺原生的swagger-ui不太好看,網(wǎng)上提供了swagger-bootstrap-ui。
pom依賴
com.github.xiaoymin swagger-bootstrap-ui 1.9.3
配置靜態(tài)訪問資源
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // 解決 swagger-ui.html 404報錯 registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); // 解決 doc.html 404 報錯 registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/"); } }
這時只需要訪問以下鏈接即可http://localhost:9000/doc.html
swagger常用注解
@Api:用在類上,標志此類是Swagger資源
屬性名稱 | 備注 |
---|---|
value | 該參數(shù)沒什么意義,在UI界面上不顯示,所以不用配置 |
tags | 說明該類的作用,參數(shù)是個數(shù)組,可以填多個 |
description | 對api資源的描述 |
@ApiOperation:用在方法上,描述方法的作用
屬性名稱 | 備注 |
---|---|
value | 方法的用途和作用 |
tags | 方法的標簽,可以設(shè)置多個值 |
notes | 方法的注意事項和備注 |
response | 返回的類型(盡量不寫,由swagger掃描生成) |
@ApiImplicitParams:包裝器:包含多個ApiImplicitParam對象列表
屬性名稱 | 備注 |
---|---|
value | 多個ApiImplicitParam配置 |
@ApiParam:用于Controller中方法的參數(shù)說明
屬性名稱 | 備注 |
---|---|
name | 屬性名稱 |
value | 屬性值 |
defaultValue | 默認屬性值 |
allowableValues | 可以不配置 |
required | 是否屬性必填 |
allowMultiple | 文件上傳時,是否允許多文件上傳 |
@ApiImplicitParam:定義在@ApiImplicitParams注解中,定義單個參數(shù)詳細信息,如果只有一個參數(shù),也可以定義在方法上
屬性名稱 | 備注 |
---|---|
name | 參數(shù)名 |
value | 參數(shù)說明 |
dataType | 參數(shù)類型 |
paramType | 表示參數(shù)放在哪里 header : 請求參數(shù)的獲?。篅RequestHeader query : 請求參數(shù)的獲?。篅RequestParam path : 請求參數(shù)的獲?。篅PathVariable body : 不常用 form : 不常用 |
defaultValue | 參數(shù)的默認值 |
required | 參數(shù)是否必須傳 |
@ApiModel:用在類上,表示對類進行說明,用于實體類中的參數(shù)接收說明
屬性名稱 | 備注 |
---|---|
value | 默認為類的名稱 |
description | 對該類的描述 |
@ApiModelProperty:在model類的屬性添加屬性說明
屬性名稱 | 備注 |
---|---|
value | 屬性描述 |
name | 屬性名稱 |
allowableValues | 參數(shù)允許的值 |
dataType | 數(shù)據(jù)類型 |
required | 是否必填 |
@ApiResponses:包裝器:包含多個ApiResponse對象列表
屬性名稱 | 備注 |
---|---|
value | 多個ApiResponse配置 |
@ApiResponse:定義在@ApiResponses注解中,一般用于描述一個錯誤的響應(yīng)信息
屬性名稱 | 備注 |
---|---|
code | 響應(yīng)碼 |
message | 狀態(tài)碼對應(yīng)的響應(yīng)信息 |
response | 默認響應(yīng)類 Void |
responseContainer | 參考ApiOperation中配置 |
@ApiIgnore():用于類或者方法上,不被顯示在頁面上
總結(jié)
除上面之外有點值得注意的是,如果是上傳文件的話,需要把@ApiImplicitParam中的dataType屬性配置為__File否則在swagger中會顯示為文本框而不是上傳按鈕
如果需要項目代碼,可以去我的github中下載;具體代碼可以查看swagger目錄
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。