7. 實現 API 自動生成

目錄

1.?pom.xml中引用依賴

2. 引入相關的依賴

3. 編寫配置類

4.?application.yml 中添加配置

5. API 常用注解?

6. 訪問 API 列表

7.?API 導入 Postman


使用 Springfox Swagger生成 API,并導入 Postman,完成API單元測試。
Swagger 簡介:Swagger 是?套 API 定義的規范 ,按照這套規范的要求去定義接口及接口相關信息, 再通過可以解析這套規范工具,就可以生成各種格式的接口文檔,以及在線接口調試頁面,通過自動文檔的方式,解決了接口文檔更新不及時的問題。
Springfox 簡介:是對 Swagger 規范解析并生成文檔的?個實現。

1.?pom.xml中引用依賴

統?管理版本,在 properties 標簽中加入版本號:

<springfox-boot-starter.version>3.0.0</springfox-boot-starter.version>

3.0.0 版本對應 Spring Boot 2.6 之前的版本,但是隨著 Spring Boot 的更新?Springfox 并沒有進行同步的更新,所以存在一些兼容性問題,因此我們選擇使用 SpringBoot 2.7.6 版本。

2. 引入相關的依賴

<!-- API?檔?成,基于swagger2 -->
<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>${springfox-boot-starter.version}</version>
</dependency>
<!-- SpringBoot健康監控 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

3. 編寫配置類

  • 在com.bitejiuyeke.forum.config 包下新建SwaggerConfig.java
  • 解決 SpringBoot 2.6.0 以上與 Springfox3.0.0 不兼容的問題,涉及 SpringBoot 版本升級過程中的一 些內部實現變化,具體說明在修改配置文件部分

?將以下代碼復制到?SwaggerConfig 類中:

package com.example.demo.controller;import org.springframework.boot.actuate.autoconfigure.endpoint.web.CorsEndpointProperties;
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointProperties;
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementPortType;
import org.springframework.boot.actuate.endpoint.ExposableEndpoint;
import org.springframework.boot.actuate.endpoint.web.*;
import org.springframework.boot.actuate.endpoint.web.annotation.ControllerEndpointsSupplier;
import org.springframework.boot.actuate.endpoint.web.annotation.ServletEndpointsSupplier;
import org.springframework.boot.actuate.endpoint.web.servlet.WebMvcEndpointHandlerMapping;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.util.StringUtils;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/*** Swagger配置類*/
// 配置類
@Configuration
// 開啟Springfox-Swagger
@EnableOpenApi
public class SwaggerConfig {/*** Springfox-Swagger基本配置* @return*/@Beanpublic Docket createApi() {Docket docket = new Docket(DocumentationType.OAS_30).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")).paths(PathSelectors.any()).build();return docket;}// 配置API基本信息private ApiInfo apiInfo() {ApiInfo apiInfo = new ApiInfoBuilder().title("論壇系統API").description("論壇系統前后端分離API測試").contact(new Contact("Test","https://hello.fprum.com", "1111111111@qq.com")).version("1.0").build();return apiInfo;}/*** 解決SpringBoot 6.0以上與Swagger 3.0.0 不兼容的問題* 復制即可**/@Beanpublic WebMvcEndpointHandlerMappingwebEndpointServletHandlerMapping(WebEndpointsSupplier webEndpointsSupplier,ServletEndpointsSupplier servletEndpointsSupplier,ControllerEndpointsSupplier controllerEndpointsSupplier,EndpointMediaTypes endpointMediaTypes, CorsEndpointProperties corsProperties,WebEndpointProperties webEndpointProperties, Environment environment) {List<ExposableEndpoint<?>> allEndpoints = new ArrayList();Collection<ExposableWebEndpoint> webEndpoints =webEndpointsSupplier.getEndpoints();allEndpoints.addAll(webEndpoints);allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());String basePath = webEndpointProperties.getBasePath();EndpointMapping endpointMapping = new EndpointMapping(basePath);boolean shouldRegisterLinksMapping =this.shouldRegisterLinksMapping(webEndpointProperties, environment,basePath);return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints,endpointMediaTypes,corsProperties.toCorsConfiguration(), newEndpointLinksResolver(allEndpoints, basePath),shouldRegisterLinksMapping, null);}private boolean shouldRegisterLinksMapping(WebEndpointPropertieswebEndpointProperties, Environment environment,String basePath) {return webEndpointProperties.getDiscovery().isEnabled() &&(StringUtils.hasText(basePath)||ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));}
}

4.?application.yml 中添加配置

  • 在 spring 節點下添加 mvc 配置項
由于 SpringBoot 2.6 之后版本把 SpringMVC 路徑匹配策略修改為 MatchingStrategy. PATH_PATTERN_PARSER;
而 Springfox-Swagger 還沒有更新版本,我們暫時先把 路徑匹配策略回退到之前的
MatchingStrategy. ANT_PATH_MATCHER
 mvc:path match:matching-strategy: ANT_PATH_MATCHER #Springfox-Swagger兼容性配置

5. API 常用注解?

  • ?@Api: 作用在 Controller 上,對控制器類的說明
    • tags="說明該類的作用,可以在前臺界面上看到的注解"
  • ?@ApiModel: 作用在響應的類上,對返回響應數據的說明
  • ?@ApiModelProerty:作用在類的屬性上,對屬性的說明
  • ?@ApiOperation: 作用在具體方法上,對 API 接口的說明
  • ?@ApiParam: 作用在方法中的每?個參數上,對參數的屬性進行說明

6. 訪問 API 列表

啟動程序,在瀏覽器中輸入網址:http://127.0.0.1:58080/swagger-ui/index.html

可以正常運行并顯示接口信息,說明配置成功,此時接口信息已經顯示出來了,可以分別針每個接口進測試,具操作按頁面指引即可。

點擊“測試接口”出現如下圖所示:?

選擇對應的 API 列表,點擊“Try it out”:?

點擊 Execute:?

圖中箭頭所指方向即為測試結果。

帶有參數的同樣可以進行測試:

7.?API 導入 Postman

獲取 API 地址,打開 Swagger 頁面的 API 資源地址并復制:

?在 Postman 中導入 url:

接下來輸入參數:

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41692.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41692.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41692.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

執行Lua腳本后一直查詢不到Redis中的數據(附帶問題詳細排查過程,一波三折)

文章目錄 執行Lua腳本后一直查詢不到Redis中的數據&#xff08;附帶詳細問題排查過程&#xff0c;一波三折&#xff09;問題背景問題1&#xff1a;Lua腳本無法切庫問題2&#xff1a;RedisTemlate切庫報錯問題3&#xff1a;序列化導致數據不一致問題4&#xff1a;Lua腳本中單引號…

Etcd備份及恢復

一、Etcd數據備份 1、備份命令 [rootlocalhost ~]# export ETCDCTL_API3 [rootlocalhost ~]# /data/etcd-3.4.9/bin/etcdctl --endpoints10.2.20.108:2379 snapshot save etcd-date "%Y-%m-%d_%H-%M-%S".snapshot 2、備份完成后會在當前目錄生成備份文件 [rootlo…

vue實現打印功能

在Vue應用中調用打印機功能&#xff0c;可以使用JavaScript的window.print()方法。這個方法會打開打印對話框&#xff0c;然后讓我們選擇打印設置并打印文檔&#xff0c;但是尼這種方法依賴于瀏覽器的打印功能。 以下是一個簡單的示例&#xff0c;演示如何在Vue組件中調用打印…

Linux Tracing Technologies

目錄 1. Linux Tracing Technologies 1. Linux Tracing Technologies Linux Tracing TechnologieseBPFXDPDPDK

Flask Web開發實戰(狼書)| 筆記第1、2章

前言 2023-8-11 以前對網站開發萌生了想法&#xff0c;又有些急于求成&#xff0c;在B站照著視頻敲了一個基于flask的博客系統。但對于程序的代碼難免有些囫圇吞棗&#xff0c;存在許多模糊或不太理解的地方&#xff0c;只會照葫蘆畫瓢。 而當自己想開發一個什么網站的時&…

ubuntu部署haproxy

HAProxy是可提供高可用性、負載均衡以及基于TCP和HTTP應用的代理. 1、更新系統報 通過在終端中運行以下命令&#xff0c;確保所有系統包都是最新的 sudo apt updatesudo apt upgrade2、安裝Haproxy sudo apt install haproxy設置開機自動啟動haproxy服務 sudo systemctl en…

Lnton羚通關于如何解決nanoPC-T4 upgrade報錯問題?

nanoPC-T4 在 ??# sudo apt update 和 sudo apt upgrade??升級或安裝軟件 ??sudo apt install xxx??時遇到以下問題&#xff1a;??Failed to set up interface with /etc/hostapd/? Setting up hostapd (2:2.6-15ubuntu2.8) ... Job for hostapd.service failed be…

ssm+vue醫院住院管理系統源碼和論文PPT

ssmvue醫院住院管理系統源碼和論文PPT012 開發工具&#xff1a;idea 數據庫mysql5.7(mysql5.7最佳) 數據庫鏈接工具&#xff1a;navcat,小海豚等 開發技術&#xff1a;java ssm tomcat8.5 摘 要 隨著時代的發展&#xff0c;醫療設備愈來愈完善&#xff0c;醫院也變成人們生…

基于IMX6ULLmini的linux裸機開發系列一:匯編點亮LED

思來想去還是決定記錄一下點燈&#xff0c;畢竟萬物皆點燈嘛 編程步驟 使能GPIO時鐘 設置引腳復用為GPIO 設置引腳屬性(上下拉、速率、驅動能力) 控制GPIO引腳輸出高低電平 使能GPIO時鐘 其實和32差不多 先找到控制LED燈的引腳&#xff0c;也就是原理圖 文件名 C:/Us…

spring頭約束(全部)

文章目錄 spring-mvcspring-aopspring-txspring-contextspring-taskspring-cachespring-jdbcp命令空間spring-jeejmslangoxmutil總結 spring-mvc <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-…

AUTOSAR NvM Block的三種類型

Native NVRAM block Native block是最基礎的NvM Block&#xff0c;可以用來存儲一個數據&#xff0c;可以配置長度、CRC等。 Redundant NVRAM block Redundant block就是在Native block的基礎上再加一個冗余塊&#xff0c;當Native block失效&#xff08;讀取失敗或CRC校驗失…

劍指offer44.數字序列中某一位的數字

最后一道題&#xff0c;我一定要自己做出來&#xff0c;想了不到一個小時想法差不多成熟了&#xff0c;但是有一個小細節出問題了&#xff0c;這個問題我在idea上debug都沒debug出來。我先講我的題解然后再講我這個小問題出在哪里吧。以下是我的代碼&#xff1a; class Soluti…

PHP手術麻醉系統源碼,自動生成麻醉和護理醫療文書

一套手術麻醉系統源碼&#xff0c;可二次開發 手術室麻醉臨床信息系統&#xff08;AIMS&#xff09;是應用于醫院手術室、麻醉科室的計算機軟件系統。該系統針對整個圍術期&#xff0c;對病人進行全程跟蹤與信息管理&#xff0c;自動集成病人HIS、LIS、RIS、PACS信息&#xff0…

【SA8295P 源碼分析】76 - Thermal 功耗 之 /dev/thermalmgr 相關調試命令匯總

【SA8295P 源碼分析】76 - Thermal 功耗 之 /dev/thermalmgr 相關調試命令匯總 1、配置文件:/mnt/etc/system/config/thermal-engine.conf2、獲取當前SOC所有溫度傳感器的溫度:cat /dev/thermalmgr3、查看所有 Thermal 默認配置和自定義配置:echo query config > /dev/th…

【Spring源碼】小白速通解析Spring源碼,從0到1,持續更新!

Spring源碼 參考資料 https://www.bilibili.com/video/BV1Tz4y1a7FM https://www.bilibili.com/video/BV1iz4y1b75q bean工廠 DefaultListableBeanFactory&#xff08;最原始&#xff09; bean的生命周期 創建&#xff08;實例化&#xff09;–>依賴注入–>-初始化…

利用vue-router跳轉的幾種方式

?1 <router-link> 2 this.$router.push 跳轉到指定路徑&#xff0c;并將跳轉頁面壓入history棧中&#xff0c;也就是添加了一個頁面記錄。3 this.$router.replace 跳轉到指定路徑&#xff0c;將history棧中的當前頁面替換為跳轉到的頁面。4 this.$router.go(n) 在his…

數據生成 | MATLAB實現WGAN生成對抗網絡數據生成

數據生成 | MATLAB實現WGAN生成對抗網絡數據生成 目錄 數據生成 | MATLAB實現WGAN生成對抗網絡數據生成生成效果基本描述程序設計參考資料 生成效果 基本描述 1.WGAN生成對抗網絡&#xff0c;數據生成&#xff0c;樣本生成程序&#xff0c;MATLAB程序&#xff1b; 2.適用于MATL…

從public static void main(String[] args)看如何構造數據

java語言中public static void main(String[] args)里面的ages有什么作用&#xff1f; 在Java語言中&#xff0c;public static void main(String[] args) 是一個特殊的方法&#xff0c;它是Java程序的入口點。當你運行一個Java程序時&#xff0c;程序會從這個方法開始執行。這…

【游戲評測】河洛群俠傳一周目玩后感

總游戲時長接近100小時&#xff0c;剛好一個月。 這兩天費了點勁做了些成就&#xff0c;刷了等級&#xff0c;把最終決戰做了。 總體感覺還是不錯的。游戲是開放世界3D游戲&#xff0c;Unity引擎&#xff0c;瑕疵很多&#xff0c;但勝在劇情扎實&#xff0c;天賦系統、秘籍功法…

kubernetes(二)

文章目錄 1. kubernetes常用資源1.1 deployment資源1.2 deployment升級和回滾1.3 tomcat連接mysql1.4 wordpress 2. kubernetes的附加組件2.1 kubernetes集群配置dns服務2.2 kubernetes的dns配置文件2.3 namespace命名空間2.4 kubernetes健康檢查2.4.1 健康檢查livenessprobo2.…