溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么在SpringBoot中利用Swagger2生成一個(gè)接口文檔

發(fā)布時(shí)間:2021-04-14 18:06:43 來(lái)源:億速云 閱讀:269 作者:Leah 欄目:編程語(yǔ)言

本篇文章為大家展示了怎么在SpringBoot中利用Swagger2生成一個(gè)接口文檔,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

準(zhǔn)備工作

一個(gè)SpringBoot項(xiàng)目,可以直接去官網(wǎng) 生成一個(gè)demo 。

一個(gè)用戶類。

package cn.itweknow.springbootswagger.model;

import java.io.Serializable;


public class User implements Serializable {

 private Integer id;

 private String name;

 private String password;

 private String email;
}

項(xiàng)目依賴

Web Service肯定是一個(gè)Web項(xiàng)目,所以我們這里依賴了 spring-boot-starter-web 包,其他兩個(gè)包就是和 Swagger 相關(guān)的包了。

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger2</artifactId>
 <version>2.9.2</version>
</dependency>

<dependency>
 <groupId>io.springfox</groupId>
 <artifactId>springfox-swagger-ui</artifactId>
 <version>2.9.2</version>
</dependency>

Swagger配置

Springfox Docket實(shí)例為Swagger配置提供了便捷的配置方法以及合理的默認(rèn)配置。我們將通過創(chuàng)建一個(gè)Docket實(shí)例來(lái)對(duì)Swagger進(jìn)行配置,具體配置如下所示。

@Configuration
@EnableSwagger2
public class SwaggerConfig extends WebMvcConfigurationSupport {

 @Bean
 public Docket productApi() {
  return new Docket(DocumentationType.SWAGGER_2).select()
    // 掃描的包路徑
    .apis(RequestHandlerSelectors.basePackage("cn.itweknow.springbootswagger.controller"))
    // 定義要生成文檔的Api的url路徑規(guī)則
    .paths(PathSelectors.any())
    .build()
    // 設(shè)置swagger-ui.html頁(yè)面上的一些元素信息。
    .apiInfo(metaData());
 }

 private ApiInfo metaData() {
  return new ApiInfoBuilder()
    // 標(biāo)題
    .title("SpringBoot集成Swagger2")
    // 描述
    .description("這是一篇博客演示")
    // 文檔版本
    .version("1.0.0")
    .license("Apache License Version 2.0")
    .licenseUrl("https://www.apache.org/licenses/LICENSE-2.0")
    .build();
 }

 @Override
 protected void addResourceHandlers(ResourceHandlerRegistry registry) {
  registry.addResourceHandler("swagger-ui.html")
    .addResourceLocations("classpath:/META-INF/resources/");

  registry.addResourceHandler("/webjars/**")
    .addResourceLocations("classpath:/META-INF/resources/webjars/");
 }
}

上述代碼中的addResourceHandlers方法添加了兩個(gè)資源處理程序,這段代碼的主要作用是對(duì)Swagger UI的支持。

API文檔

好了,到這一步,我們已經(jīng)在一個(gè)SpringBoot項(xiàng)目中配置好了Swagger?,F(xiàn)在,我們就來(lái)看一下如何去使用他。首先我們定義了一個(gè) Controller 并提供了兩個(gè)接口:

  • 通過用戶id獲取用戶

  • 用戶登錄

@RestController
@RequestMapping("/user")
@Api(description = "用戶相關(guān)接口")
public class UserController {

 /**
  * 通過id查詢用戶
  * @return
  */
 @RequestMapping(value = "/get", method = RequestMethod.GET)
 @ApiOperation("根據(jù)id獲取用戶")
 public User getUserById(@ApiParam(value = "用戶id") Integer id) {
  return new User();
 }

 @RequestMapping(value = "/login", method = RequestMethod.POST)
 @ApiOperation("用戶登錄")
 public User login(@RequestBody User user) {
  return new User();
 }
}

相信大家都注意到了,這個(gè) Controller 里面多了很多新的注解,比如說(shuō) @Api , @ApiOperation 等,下面我們就來(lái)一一解釋一下。

  • @Api,這個(gè)注解是用在Controller類上面的,可以對(duì)Controller做必要的說(shuō)明。

  • @ApiOperation,作用在具體的方法上,其實(shí)就是對(duì)一個(gè)具體的API的描述。

  • @ApiParam,對(duì)API參數(shù)的描述。

到這里,其實(shí)我們的Swagger就已經(jīng)可以有效果了,讓我們將項(xiàng)目運(yùn)行起來(lái)先看看效果。訪問 http://localhost:8080/swagger-ui.html 即可。

怎么在SpringBoot中利用Swagger2生成一個(gè)接口文檔

Model

在上面的圖中可以看到在頁(yè)面的下方有一個(gè)Models的標(biāo)簽,那么這個(gè)是啥呢。其實(shí)這個(gè)就是我們API中出現(xiàn)的一些對(duì)象的文檔,我們也可以通過注解來(lái)對(duì)這些對(duì)象中的字段做一些說(shuō)明,以方便使用者理解。以文章開頭提到的 User 類來(lái)做一個(gè)說(shuō)明。

@ApiModel("用戶實(shí)體")
public class User implements Serializable {

 @ApiModelProperty(value = "用戶id")
 private Integer id;

 @ApiModelProperty(value = "用戶名稱", required = true)
 private String name;

 @ApiModelProperty(value = "密碼", required = true)
 private String password;

 @ApiModelProperty(value = "用戶郵箱")
 private String email;
}

我們來(lái)看一下 User 類在Swagger上是如何展示的:

怎么在SpringBoot中利用Swagger2生成一個(gè)接口文檔

上述內(nèi)容就是怎么在SpringBoot中利用Swagger2生成一個(gè)接口文檔,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI