最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot集成Swagger2生成接口文檔的方法示例

 更新時間:2018年12月20日 10:49:26   作者:名字想好沒  
我們提供Restful接口的時候,API文檔是尤為的重要,它承載著對接口的定義,描述等,本文主要介紹了SpringBoot集成Swagger2生成接口文檔的方法示例,需要的朋友們下面隨著小編來一起學習學習吧

我們提供Restful接口的時候,API文檔是尤為的重要,它承載著對接口的定義,描述等。它還是和API消費方溝通的重要工具。在實際情況中由于接口和文檔存放的位置不同,我們很難及時的去維護文檔。個人在實際的工作中就遇到過很多接口更新了很久,但是文檔卻還是老版本的情況,其實在這個時候這份文檔就已經(jīng)失去了它存在的意義。而 Swagger 是目前我見過的最好的API文檔生成工具,使用起來也很方便,還可以直接調(diào)試我們的API。我們今天就來看下 Swagger2SpringBoot 的結(jié)合。

準備工作

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

一個用戶類。

package cn.itweknow.springbootswagger.model;

import java.io.Serializable;

/**
 * @author ganchaoyang
 * @date 2018/12/19 10:29
 * @description
 */
public class User implements Serializable {

 private Integer id;

 private String name;

 private String password;

 private String email;
}

項目依賴

Web Service肯定是一個Web項目,所以我們這里依賴了 spring-boot-starter-web 包,其他兩個包就是和 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實例為Swagger配置提供了便捷的配置方法以及合理的默認配置。我們將通過創(chuàng)建一個Docket實例來對Swagger進行配置,具體配置如下所示。

@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頁面上的一些元素信息。
    .apiInfo(metaData());
 }

 private ApiInfo metaData() {
  return new ApiInfoBuilder()
    // 標題
    .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方法添加了兩個資源處理程序,這段代碼的主要作用是對Swagger UI的支持。

API文檔

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

  • 通過用戶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();
 }
}

相信大家都注意到了,這個 Controller 里面多了很多新的注解,比如說 @Api , @ApiOperation 等,下面我們就來一一解釋一下。

  • @Api,這個注解是用在Controller類上面的,可以對Controller做必要的說明。
  • @ApiOperation,作用在具體的方法上,其實就是對一個具體的API的描述。
  • @ApiParam,對API參數(shù)的描述。

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

Model

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

@ApiModel("用戶實體")
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;
}

我們來看一下 User 類在Swagger上是如何展示的:

有一個細節(jié),那就是required = true的字段上面被紅星修飾,代表了必填項。

API測試

swagger-ui.html 頁面上我們可以直接測試API,如下圖所示,點擊 Try it out ,然后填寫參數(shù),并點擊 Execute 即可進行調(diào)用。

好了,對于Swagger的介紹就到這里了,最后奉上本文的源碼地址, 請戳這里

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java INPUTSTREAM如何實現(xiàn)重復(fù)使用

    Java INPUTSTREAM如何實現(xiàn)重復(fù)使用

    這篇文章主要介紹了Java INPUTSTREAM如何實現(xiàn)重復(fù)使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • Java中單例模式的7種寫法

    Java中單例模式的7種寫法

    這篇文章主要介紹了Java中單例模式的7種寫法,本文分別給出每種方式的實現(xiàn)代碼,需要的朋友可以參考下
    2015-05-05
  • 使用Java實現(xiàn)獲取excel附件并解析

    使用Java實現(xiàn)獲取excel附件并解析

    在Java中,我們經(jīng)常需要讀取Excel文件中的數(shù)據(jù),進行處理和分析,本文將介紹如何使用Java代碼來獲取與解析Excel文件中的附件,希望對大家有所幫助
    2025-04-04
  • 用Java將字符串的首字母轉(zhuǎn)換大小寫

    用Java將字符串的首字母轉(zhuǎn)換大小寫

    在項目開發(fā)的時候會需要統(tǒng)一字符串的格式,比如首字母要求統(tǒng)一大寫或小寫,那用Java如何實現(xiàn)這一功能?下面一起來學習學習。
    2016-08-08
  • 詳解Java實現(xiàn)分治算法

    詳解Java實現(xiàn)分治算法

    分治算法(divide and conquer)是五大常用算法(分治算法、動態(tài)規(guī)劃算法、貪心算法、回溯法、分治界限法)之一,很多人在平時學習中可能只是知道分治算法,但是可能并沒有系統(tǒng)的學習分治算法,本篇就帶你較為全面的去認識和了解分治算法
    2021-06-06
  • JavaWeb中Tomcat底層機制和Servlet運行原理詳解

    JavaWeb中Tomcat底層機制和Servlet運行原理詳解

    這篇文章主要介紹了JavaWeb中Tomcat底層機制和Servlet運行原理詳解,Tomcat是一個開源的Java Web服務(wù)器,它是基于Java Servlet和JavaServer Pages(JSP)技術(shù)的,下面是關(guān)于Tomcat底層機制和Servlet運行原理的簡要說明,需要的朋友可以參考下
    2023-10-10
  • Java 8函數(shù)式接口Function BiFunction DoubleFunction區(qū)別

    Java 8函數(shù)式接口Function BiFunction DoubleFunction

    這篇文章主要為大家介紹了Java 8函數(shù)式接口Function BiFunction DoubleFunction區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • java中多個@Scheduled定時器不執(zhí)行的解決方法

    java中多個@Scheduled定時器不執(zhí)行的解決方法

    在應(yīng)用開發(fā)中經(jīng)常需要一些周期性的操作,比如每5分鐘執(zhí)行某一操作等,這篇文章主要給大家介紹了關(guān)于java中多個@Scheduled定時器不執(zhí)行的解決方法,需要的朋友可以參考下
    2023-04-04
  • Mybatis中Mapper映射文件使用詳解

    Mybatis中Mapper映射文件使用詳解

    這篇文章主要介紹了Mybatis中Mapper映射文件使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • 全鏈路監(jiān)控平臺Pinpoint?SkyWalking?Zipkin選型對比

    全鏈路監(jiān)控平臺Pinpoint?SkyWalking?Zipkin選型對比

    這篇文章主要為大家介紹了全鏈路監(jiān)控平臺Pinpoint?SkyWalking?Zipkin實現(xiàn)的選型對比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03

最新評論

河池市| 乌拉特中旗| 石屏县| 屏边| 岳阳市| 博罗县| 远安县| 扶余县| 延津县| 年辖:市辖区| 陆良县| 深圳市| 工布江达县| 策勒县| 文登市| 揭阳市| 锦屏县| 五台县| 凭祥市| 湟源县| 延寿县| 闽清县| 界首市| 龙川县| 黄梅县| 宁乡县| 颍上县| 吉木萨尔县| 库伦旗| 金乡县| 稷山县| 鄯善县| 梁山县| 年辖:市辖区| 普安县| 安福县| 调兵山市| 西华县| 日土县| 思南县| 溧阳市|