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

SpringBoot中使用Swagger的最全方法詳解

 更新時(shí)間:2023年12月04日 10:07:16   作者:工程師日月  
Swagger是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化Restful風(fēng)格的Web服務(wù),這篇文章主要給大家介紹了關(guān)于SpringBoot中使用Swagger的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

Swagger是什么?

Swagger是一套基于OpenAPI規(guī)范構(gòu)建的開源工具,可以幫助我們?cè)O(shè)計(jì)、構(gòu)建、記錄以及使用Rest API。Swagger主要包括了一下三個(gè)部分:

  • Swagger Editor: 基于瀏覽器的編輯器,我們可以使用它來編寫我們的OpenAPI文檔。
  • Swagger UI: 它會(huì)將我們編寫的OpenAPI規(guī)范呈現(xiàn)為交互式的API文檔。后文我們將使用瀏覽器來查看并且操作我們的Rest API。
  • Swagger CodeGen:它可以通過為OpenAPI規(guī)范定義的任何API生成服務(wù)器存根和客戶端SDK來簡(jiǎn)化構(gòu)建過程。

簡(jiǎn)單點(diǎn)來講就是說,swagger是一款可以根據(jù)resutful風(fēng)格生成的生成的接口開發(fā)文檔,并且支持做測(cè)試的一款中間軟件。

為什么要用Swagger?

后端:

  • 不用再手寫WiKi接口拼大量的參數(shù),避免手寫錯(cuò)誤
  • 對(duì)代碼侵入性低,采用全注解的方式,開發(fā)簡(jiǎn)單
  • 方法參數(shù)名修改、增加、減少參數(shù)都可以直接生效,不用手動(dòng)維護(hù)
  • 缺點(diǎn):增加了開發(fā)成本,寫接口還得再寫一套參數(shù)配置

前端:

  • 后端只需要定義好接口,會(huì)自動(dòng)生成文檔,接口功能、參數(shù)一目了然
  • 聯(lián)調(diào)方便,如果出問題,直接測(cè)試接口,實(shí)時(shí)檢查參數(shù)和返回值,就可以快速定位是前端還是后端的問題

測(cè)試:

  • 對(duì)于某些沒有前端界面UI的功能,可以用它來測(cè)試接口
  • 操作簡(jiǎn)單,不用了解具體代碼就可以操作

準(zhǔn)備工作

使用的環(huán)境:

  • springboot: 2.7.8-SNAPSHOT
  • Java:1.8
  • swagger:2.9.2
		<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>

創(chuàng)建項(xiàng)目

添加依賴

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

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</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>
	</dependencies>

編寫接口

UserController提供了用戶的增、刪、改、查四個(gè)接口,TestController提供了一個(gè)測(cè)試接口

pojo.user源碼:

package com.example.demo.pojo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

/**
 * @Author 秋名山碼神
 * @Date 2023/1/9
 * @Description
 */

@ApiModel("用戶實(shí)體類")
public class User {
    @ApiModelProperty("用戶名")
    private String username;
    @ApiModelProperty("密碼")
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

UserController源碼:

package com.example.demo.controller;

import com.example.demo.pojo.User;
import org.springframework.web.bind.annotation.*;

/**
 * @Author 秋名山碼神
 * @Date 2023/1/9
 * @Description
 */
@RestController
@RequestMapping("/user")
public class UserController {
    @PostMapping("/add")
    public boolean addUser(User user){
        return false;
    }
    @GetMapping("/find/{id}")
    public User findById(@PathVariable("id") int id) {
        return new User();
    }
    @PutMapping("/update")
    public boolean update(@RequestBody User user) {
        return true;
    }
    @DeleteMapping("/delete/{id}")
    public boolean delete(@PathVariable("id") int id) {
        return true;
    }
}

SwaggerConfig源碼

package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @Author 秋名山碼神
 * @Date 2023/1/9
 * @Description
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
//    配置Swagger的Docket的bean實(shí)例
    public Docket api(){
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
//        RequestHandlerSelectors配置掃描接口的方式
                .apis(RequestHandlerSelectors.any())
//                path過濾什么路徑
                .paths(PathSelectors.any())
                .build();
    }

@Configuration是告訴Spring Boot需要加載這個(gè)配置類;@EnableSwagger2是啟用Swagger2.

驗(yàn)證

啟動(dòng)一下項(xiàng)目,然后在瀏覽器中訪問http://localhost:8080/swagger-ui.html

到此項(xiàng)目已經(jīng)跑起來了,我們來解釋一下,Swagger中的高級(jí)配置**(代碼注釋寫的也很清楚)**

高級(jí)配置

文檔注釋

  • 通過在控制器類上添加@Api注解,可以給控制器增加描述和標(biāo)簽信息
@Api(tags = "用戶相關(guān)接口",description = "提供用戶相關(guān)的Rest API")
public class UserController {
  • 通過在接口方法上添加@ApiOperation注解來展開對(duì)接口的描述
@ApiOperation("添加用戶操作")
    @PostMapping("/add")
    public boolean addUser(User user){
        return false;
    }
  • 通過在實(shí)體類上添加@ApiModel和@ApiModelProperty注解來對(duì)我們的API所涉及到的對(duì)象做描述
@ApiModel("用戶實(shí)體類")
public class User {
    @ApiModelProperty("用戶名")
    private String username;
    @ApiModelProperty("密碼")
    private String password;
  • 文檔信息配置,Swagger還支持設(shè)置一些文檔的版本號(hào)、聯(lián)系人郵箱、網(wǎng)站、版權(quán)、開源協(xié)議等等信息,但與上面幾條不同的是這些信息不能通過注解配置,而是通過創(chuàng)建一個(gè)ApiInfo對(duì)象,并且使用appInfo()方法來設(shè)置,我們?cè)赟waggerConfig.java類中新增如下內(nèi)容即可:
 @Bean
//    配置Swagger的Docket的bean實(shí)例
    public Docket api(){
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
//        RequestHandlerSelectors配置掃描接口的方式
                .apis(RequestHandlerSelectors.any())
//                path過濾什么路徑
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfo(
                "Spring Boot 項(xiàng)目集成 Swagger 實(shí)例文檔",
                "歡迎",
                "API V1.0",
                "Terms of service",
                new Contact("名字想好沒", "csdn",              "163.com"),
                "Apache", "http://www.apache.org/", Collections.emptyList());
    }

接口過濾

加注解:如果想在文檔中屏蔽掉某個(gè)接口方法,只需要在該接口方法上添加@ApiIgnore即可

在Docket上增加篩選。Docket提供了apis()和paths()兩個(gè)方法來幫助我們?cè)诓煌?jí)別上過濾接口:
apis(): 這種方式我們可以通過指定包名的方式,讓Swagger 只去某些包下掃描。
paths(): 這種方式可以通過篩選API的 url 來進(jìn)行過濾。

自定義響應(yīng)

Docket的globalResponseMessage()方法全局覆蓋HTTP方法的響應(yīng)消息,但是我們首先得通過Docket的useDefaultResponseMessage()方法告訴Swagger不適用默認(rèn)的HTTP響應(yīng)消息 ,假設(shè)我們需要覆蓋所有GET方法的 500 和 403 錯(cuò)誤的響應(yīng)消息。我們只需要在SwaggerConfig.java 類種的Docket Bean下添加如下內(nèi)容:

.useDefaultResponseMessages(false)
.globalResponseMessage(RequestMethod.GET, newArrayList(
new ResponseMessageBuilder()
              .code(500)
              .message("服務(wù)器發(fā)生異常")
              .responseModel(new ModelRef("Error"))
              .build(),
       new ResponseMessageBuilder()
              .code(403)
              .message("資源不可用")
              .build()
));

SwaggerUI的使用

接口調(diào)用

遇到的問題:

啟動(dòng)項(xiàng)目報(bào)空指針異常

添加這個(gè)代碼:spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER

總結(jié)

到此這篇關(guān)于SpringBoot中使用Swagger的文章就介紹到這了,更多相關(guān)SpringBoot使用Swagger內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • springboot臨時(shí)文件存儲(chǔ)目錄配置方式

    springboot臨時(shí)文件存儲(chǔ)目錄配置方式

    這篇文章主要介紹了springboot臨時(shí)文件存儲(chǔ)目錄配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 使用Java優(yōu)化設(shè)備壽命預(yù)測(cè)的5個(gè)關(guān)鍵技巧

    使用Java優(yōu)化設(shè)備壽命預(yù)測(cè)的5個(gè)關(guān)鍵技巧

    本文介紹了設(shè)備壽命管理領(lǐng)域的Java優(yōu)化實(shí)踐,通過調(diào)用Python、特征工程、緩存機(jī)制等技巧,提升了預(yù)測(cè)準(zhǔn)確率和速度,減少了資源占用,實(shí)戰(zhàn)案例展示了如何避免調(diào)用陷阱、特征陷阱等問題,強(qiáng)調(diào)了優(yōu)化的重要性
    2026-05-05
  • Maven安裝、配置、Idea配置maven全過程

    Maven安裝、配置、Idea配置maven全過程

    這篇文章主要介紹了Maven安裝、配置、Idea配置maven全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2026-05-05
  • 基于Java的界面開發(fā)詳細(xì)步驟(用戶注冊(cè)登錄)

    基于Java的界面開發(fā)詳細(xì)步驟(用戶注冊(cè)登錄)

    通過一段時(shí)間Java Web的學(xué)習(xí),寫一個(gè)簡(jiǎn)單的注冊(cè)登陸界面來做個(gè)總結(jié),這篇文章主要給大家介紹了基于Java的界面開發(fā)(用戶注冊(cè)登錄)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Java SpringBoot啟動(dòng)指定profile的8種方式詳解

    Java SpringBoot啟動(dòng)指定profile的8種方式詳解

    這篇文章主要介紹了spring boot 如何指定profile啟動(dòng)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 解決Mybatis-plus自定義TypeHandler查詢映射結(jié)果一直為null問題

    解決Mybatis-plus自定義TypeHandler查詢映射結(jié)果一直為null問題

    這篇文章主要介紹了解決Mybatis-plus自定義TypeHandler查詢映射結(jié)果一直為null問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Sentinel原理與SpringBoot整合實(shí)戰(zhàn)案例講解

    Sentinel原理與SpringBoot整合實(shí)戰(zhàn)案例講解

    本文將詳細(xì)介紹Sentinel的核心原理和基本功能點(diǎn),并提供一個(gè)完整的SpringBoot整合Sentinel的案例,幫助讀者快速掌握Sentinel的使用方法,感興趣的朋友一起看看吧
    2025-07-07
  • mybatis postgresql 批量刪除操作方法

    mybatis postgresql 批量刪除操作方法

    PostgreSQL是一種特性非常齊全的自由軟件的對(duì)象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(ORDBMS),這篇文章主要介紹了mybatis postgresql 批量刪除操作,需要的朋友可以參考下
    2020-02-02
  • Java Exception異常類的繼承體系詳解

    Java Exception異常類的繼承體系詳解

    Java中的異常處理機(jī)制分為異常(Exception)和錯(cuò)誤(Error)兩大類,異常分為編譯時(shí)異常(CheckedException)和運(yùn)行時(shí)異常(RuntimeException),編譯時(shí)異常需在代碼中顯式處理,而運(yùn)行時(shí)異??梢允褂胻ry-catch塊捕獲
    2025-11-11
  • Java源碼解析之詳解ImmutableMap

    Java源碼解析之詳解ImmutableMap

    今天給大家?guī)淼氖顷P(guān)于Java源碼的相關(guān)知識(shí),文章圍繞著Java ImmutableMap展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評(píng)論

梧州市| 永和县| 博白县| 神农架林区| 玉环县| 诏安县| 炎陵县| 长乐市| 乌拉特中旗| 沙洋县| 芜湖县| 阜城县| 凤冈县| 开封市| 冀州市| 思茅市| 原阳县| 井研县| 吉林省| 宜丰县| 绍兴市| 佛坪县| 颍上县| 宜兰市| 胶州市| 乡宁县| 桑植县| 明水县| 长宁县| 南投市| 东乡县| 阳西县| 盱眙县| 汕头市| 农安县| 沂南县| 曲周县| 木兰县| 神农架林区| 高碑店市| 修水县|