11 — springboot整合swagger — 更新完畢
阿新 • • 發佈:2021-11-13
1、前言
- 理論知識濾過,自行百度百科swagger是什麼
2、匯入依賴
<!-- swagger所需要的依賴--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.8.0</version> </dependency> <!-- 這個依賴是為了渲染swagger文件頁面的( 為了好看一點罷了 ) ,swagger真正的依賴是上面兩個--> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>swagger-bootstrap-ui</artifactId> <version>1.8.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.75</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
4、編寫swagger配置檔案
package cn.xiegongzi.config; 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.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration // 把當前類丟到spring容器中去 @EnableSwagger2 // 開啟swagger功能 public class SwaggerConfig { @Bean public Docket createRestApi() { // http://ip地址:埠/專案名/swagger-ui.html#/ ApiInfo apiInfo = new ApiInfoBuilder() .title( "悠忽有限公司" ) // 網站標題 即:生成的文件網址標題 .description( "這是一個很nice的介面文件" ) // 網站描述 即:對生成文件的描述 .version( "9.0" ) // 版本 .contact( new Contact("紫邪情","https://www.cnblogs.com/xiegongzi/","110" ) ) // 聯絡人 .license( "tcp" ) // 協議 http / https都可以 .licenseUrl( "http://localhost:8080/" ) // 協議url 即:進入到swagger文件頁面的地址 .build(); return new Docket( DocumentationType.SWAGGER_2 ) // swagger版本 .pathMapping( "/" ) // 請求對映路徑 就是:controller中有一個介面,然後前臺訪問的那個介面路徑 // 這個可以在生成的文件中進行除錯時看到 .select() // 根據pathMapping去進行查詢( 做相應的操作 ) // 掃描包 即:哪些地方可以根據我們的註解配置幫我們生成文件 .apis( RequestHandlerSelectors.basePackage( "cn.xiegongzi" ) ) .paths( PathSelectors.any() ) .build() .apiInfo( apiInfo ); } }
5、編寫yml檔案
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_spring?useUnicode=true&characterEncoding=utf-8
username: root
password: "072413"
6、編寫實體類
package cn.xiegongzi.entity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; @Data @AllArgsConstructor @NoArgsConstructor @ApiModel // 表明這個實體類也可以生成到swagger文件中去 即:後臺要接收的引數是一個物件時使用 —— 這個東西可以先不加,在做增加、修改時可以用這個測試一下,從而去swagger中看效果 public class User implements Serializable { @ApiModelProperty // 表明:要生成的實體類屬性是註解下的這個 private Integer id; @ApiModelProperty private String username; @ApiModelProperty private String phone; }
7、編寫mapper
package cn.xiegongzi.mapper;
import cn.xiegongzi.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface IUserMapper {
@Select("select * from user")
List<User> findAllUser();
}
8、編寫service介面和實現類
9、編寫controller
package cn.xiegongzi.controller;
import cn.xiegongzi.service.IUserService;
import com.alibaba.fastjson.JSON;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Api(tags = "使用者管理介面集") // 表示當前類可以被生成一個swagger文件 , 可以跟引數tags,引數表示:這整個介面類的名字
public class UserController {
@Autowired
private IUserService userService;
// @ApiImplicitParam 這個註解是對請求引數做限制用的,如:請求時要求前臺傳遞一個id,那麼:在這個註解裡面:就可以宣告這個引數的型別、
// 是否為必填.....
@GetMapping("/swaggger/doc") // 遵循restful風格 要是使用@RequestMapping的話,會生成多個介面( 即:對應post、get.... )
@ApiOperation(value = "獲取全部使用者介面" , notes = "獲取全部的使用者")
// value這個介面的名字
// 對這個介面的描述
public String findAllUser() {
return JSON.toJSONString( userService.findAllUser() );
}
}
10、啟動專案,測試
以上的內容是入門,其他的註解開發時自行摸索吧