Swagger 是一組用于設(shè)計、構(gòu)建、文檔化和使用 RESTful Web 服務(wù)的開源工具和框架。它允許開發(fā)團隊設(shè)計、構(gòu)建和測試 API,并提供易于理解的文檔,以便開發(fā)人員和消費者能夠快速了解和使用 API。Swagger 通常與各種編程語言和框架一起使用,以簡化 API 的開發(fā)和維護過程。
第一步:用IDEA搭建一個Spring Boot項目 (夠從0了吧)
1.文件==>項目==>新建項目,這里新建一個Spring項目
2.下一步,選擇版本以及所需的依賴,然后完成項目創(chuàng)建,進去等待依賴加載完畢。
3.如果不出以外的的話,建立后的項目文件目錄應(yīng)該為:
第二步:添加Swagger相關(guān)依賴
1.打開上圖pom.xml文件,添加如下三個依賴:
<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>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.8</version>
</dependency>
2.接著準備配置一下application.properties:主要是JDBC的一些配置
#將路徑替換為你的路徑
spring.datasource.url=jdbc:mysql://localhost:3306/food?useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
然后準備配置文件:
3.在com.swaggertest下新建config文件夾,然后新建SwaggerConfig和WebMvcConfigurer兩個JAVA文件
4.點擊SwaggerConfig,配置為如下,你粘貼之后大概率會全都是紅的,需要一個一個導入類,如果你發(fā)現(xiàn)無法導入類,那就是你的依賴沒有加載完畢,右鍵pom選擇meaven然后重構(gòu)
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
// 通過.select()方法,配置掃描哪些API接口,RequestHandlerSelectors配置如何掃描接口
.select()
//any() // 掃描所有,項目中的所有接口都會被掃描到
//none() // 不掃描接口
// 通過方法上的注解掃描,如withMethodAnnotation(GetMapping.class)只掃描get請求
//withMethodAnnotation(final Class<? extends Annotation> annotation)
// 通過類上的注解掃描,如.withClassAnnotation(Controller.class)只掃描有controller注解的類中的接口
//withClassAnnotation(final Class<? extends Annotation> annotation)
//basePackage(final String basePackage) // 根據(jù)包路徑掃描接口
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //添加ApiOperiation注解的被掃描
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
Contact contact = new Contact("加洛斯", "666", "xxxxx@qq.com");
return new ApiInfo(
"文檔標題",
"文檔標題的描述",
"版本1.0",
"urn:tos",
contact,
"Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0",
new ArrayList());
}
}
類似于如下情況的話,重構(gòu)pom文件
右鍵pom,最底下選擇maven,重新加載項目,然后就會出現(xiàn)如下可以導入類
?這個要注意,選擇service:
?配置好后如下圖:
5.接下來配置WebMvcConfigurer
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
@Configuration
public class WebMvcConfigurer extends WebMvcConfigurationSupport {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("classpath:/static/");
/** 配置knife4j 顯示文檔 */
registry.addResourceHandler("doc.html")
.addResourceLocations("classpath:/META-INF/resources/");
/**
* 配置swagger-ui顯示文檔
*/
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
/** 公共部分內(nèi)容 */
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
到此準備工作已經(jīng)做的差不多了,但是后續(xù)也會有一些錯誤,我們碰到后一 一解決。
第三步:啟動SpringBoot
1.啟動springboot的啟動類,訪問http://localhost:8080/doc.html即可看到如下接口文檔
?2.訪問http://localhost:8080/swagger-ui.html即可看到如下接口文檔
你也有可能會遇到:解決辦法就是用谷歌瀏覽器試試,這倒霉微軟自帶的瀏覽器不知道怎么個事。
?
當然你也有可能會碰到如下情況
?
你會看到網(wǎng)上一堆人說你什么啟動類位置不對,你可以檢查一下位置,但是多半沒有用,最有用的辦法是在pom文件中檢查一下上面那三個依賴兩個swagger和一個knife4j你有沒有添加以及在application.properties添加一句話:spring.mvc.pathmatch.matching-strategy=ant_path_matcher
到此為止,配置項完畢。接下來看看如何簡單的使用一下Swagger。
第四步:使用swagger?
1.我們新建一個entity包,在此包下建立一個食物實體類:Food,以及foodtype? 注意注意:實體類一定要遵循小駝峰命名法,一定要遵循小駝峰命名法,一定要遵循小駝峰命名法??!
要不然會出現(xiàn)無法顯示@ApiModelProperty的值的情況
注解介紹:@ApiModel(value = "類別名")? ? ?作用在實體類上? ? ? ? ? ? ? ? ?@ApiModelProperty作用在實體類的屬性上(暫時先知道這兩個就行,其他的在學習完配置之后研究)
@Data
@ApiModel(value = "食物類Model")
public class food {
@ApiModelProperty(value = "食物ID")
private String foodId;
@ApiModelProperty(value = "食物名稱")
private String foodName;
@ApiModelProperty(value = "食物種類ID")
private String foodTypeId;
@ApiModelProperty(value = "食物種類名")
private String foodTypeName;
public food(String foodId, String foodName, String foodTypeId, String foodTypeName) {
this.foodId = foodId;
this.foodName = foodName;
this.foodTypeId = foodTypeId;
this.foodTypeName = foodTypeName;
}
}
@Data
@ApiModel(value = "食物種類Model")
public class foodtype {
@ApiModelProperty(value = "食物種類ID")
private String foodTypeId;
@ApiModelProperty(value = "食物種類名")
private String foodTypeName;
@ApiModelProperty(value = "食物種類所屬列表")
private List<food> foodLists;
}
2.新建Controller包下的foodcontroller,然后配置好相關(guān)注解,同樣配置如下注解@Api以及@ApiOperation(注解具體有什么用在往后學習時講解,可以去看看別的大佬文章這里不多贅述)
@RestController
@Api(value = "食物Controller", tags = { "獲取食物相關(guān)接口" })
@RequestMapping(value = "/food")
public class foodController {
@ApiOperation(value = "獲取食物種類類")
@GetMapping("/getFoodtype")
public foodtype test2() throws Exception {
return null;
}
@ApiOperation(value = "獲取食物類")
@GetMapping("/getFood")
public List<food> test1() throws Exception {
//使用構(gòu)造函數(shù)模擬一個查詢的數(shù)據(jù)方便測試
food food = new food("1", "鍋包肉","1", "肉類");
List<food> foodList = new ArrayList<food>();
foodList.add(food);
return foodList;
}
}
3.到此為止我們的注解就搭建起來了,接下來我們看看效果,訪問:http://localhost:8080/doc.html#/home? ? ? ?我們首先能看到Model
這里面的Model是我們在Controller中@ApiOperation注解中使用到了的才會顯示,如果你定義了一個Model但是Controller層中的ApiOperation注解并沒有用到這個Model,他就并不會顯示在這里,我們來看看效果:
接下來看看Controller層,可以看到有我們剛剛定義的兩個接口:
可以看到功能很強大,接下來看看接口的測試,我們剛剛用構(gòu)造函數(shù)模擬了一個,看看返回如何:
文章來源:http://www.zghlxwxcb.cn/news/detail-757830.html
到此我們的基礎(chǔ)Swagger就搭建成功了,但是在實際開發(fā)的過程中僅僅使用這些還是遠遠不夠的,后面我會將常用的Swagger注解講解給大家,如果在搭建Swagger中遇到了哪些難題也歡迎各位留言,如果覺得有用可以點個贊,謝謝各位?。。。?!文章來源地址http://www.zghlxwxcb.cn/news/detail-757830.html
到了這里,關(guān)于Swagger:手把手教你從0開始配置idea中swagger,全步驟配圖文版。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!