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

Spring?Boot?集成?Swagger2構建?API文檔

 更新時間:2022年05月23日 09:56:07   作者:村雨遙  
這篇文章主要介紹了Spring?Boot?集成?Swagger2構建?API文檔,通過使用?Swagger,我們只需要按照它所給定的一系列規(guī)范去定義接口以及接口的相關信息,然后它就能幫我們自動生成各種格式的接口文檔,方便前后端開發(fā)者進行前后端聯(lián)調,下文需要的朋友可以參考一下

前言:

不管你是從事前端還是后端開發(fā),相信都難免被接口文檔折磨過。如果你是一個前端開發(fā)者,可能你會經(jīng)常發(fā)現(xiàn)后端給的接口文檔跟實際代碼有所出入。而假設你是一個后端開發(fā)者,你可能又會覺得自己開發(fā)后端接口已經(jīng)夠煩的了,還要花費大量精力去編寫和維護接口文檔,所以難免有時候會更新不及時。這就可能造成了前后端相互不理解,最后甚至吵起來,哈哈哈 。

這時候我們就會想,有沒有一款工具,能讓我們快速實現(xiàn)編寫接口文檔。這個工具既能保證我們的接口文檔實時更新,也能保證我們不用花過多時間去維護,就像寫注釋那么簡單。

既然這是大多數(shù)前后端程序員的一大痛點,那必須得有一個解決方案吧。而這個方案使用的人多了,慢慢就成了一種規(guī)范,大家都默認使用這個方案,從而解決前后端接口文檔不同步的問題,而這就是我們今天的主角 - Swagger 的由來。

通過使用 Swagger,我們只需要按照它所給定的一系列規(guī)范去定義接口以及接口的相關信息,然后它就能幫我們自動生成各種格式的接口文檔,方便前后端開發(fā)者進行前后端聯(lián)調。同時,如果我們的代碼接口有所變動,只需要更新 Swagger 的描述,它就能進行實時更新,做到實際代碼和接口文檔的一致性。

一、Swagger 是什么

Swagger 是一種接口描述語言,主要用于生成、描述、調用以及可視化 RESTful 風格的 Web 服務接口文檔。以前的項目可能更多的是前后端未分開同時進行開發(fā),所以接口文檔可能不是那么重要。但現(xiàn)在主流的項目基本都是前后端分離,如果前后端沒有溝通好,就有可能導致接口文檔更新不及時,造成一些不必要的麻煩。而通俗地講,Swagger 就是幫我們寫接口文檔的。它不僅能自動生成實時接口文檔,還能生成測試用例,方便我們進行測試。

Swagger 主要提供了如下幾種開源工具:

1.Swagger Editor

Swagger 所提供的的編輯器,主要用于編輯 Swagger 描述文件,支持實時預覽描述文件更新后的效果,類似于我們的 Markdown 編輯器,左邊編寫源碼,右邊就可以進行實時預覽。該編輯器不僅提供在線使用,還支持本地部署。

2.Swagger UI

提供可視化的 UI 頁面,用于展示 Swagger 的描述文件。接口的調用方、測試等都可以通過該頁面查閱接口的相關信息,并且進行簡單的接口請求測試。

3.Swagger Codegen

通過使用該工具,可以將 Swagger 的描述文件生成 HTML 和 CWIKI 形式的接口文檔,而且還能生成針對多種不同語言的服務端和客戶端的代碼。

4.Swagger UI

平時和我們打交道最多的,可能就是 Swagger UI 這個工具了,它主要用于顯示接口文檔。根據(jù)我們代碼中按照 Swagger 規(guī)范所設置的描述,自動生成接口說明文檔。一個簡單的示例如下:

二、Spring Boot 集成 Swagger

1.創(chuàng)建 Spring Boot 項目

通過以上對 Swagger 簡單的介紹之后,我們來看看如何在 Spring Boot 項目中使用 Swagger。

首先需要創(chuàng)建一個簡單的 Spring Boot 項目,如果你還不知道如何創(chuàng)建,可以參考Spring Boot 教程之創(chuàng)建項目的三種方式

創(chuàng)建好之后的項目接口如下:

2.引入依賴

創(chuàng)建好Spring Boot 項目之后,需要配置項目 pom.xml 文件,在其中引入 Swagger 的相關依賴。

<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>

3.構建 Swagger 配置類

引入依賴后,接下來就是構建 Swagger 的配置類了。

package com.cunyu.springbootswaggerdemo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;

@Configuration
@EnableSwagger2
public class Swagger2Configuration {

? ? /**
? ? ?* 配置 Swagger 2
? ? ?* 注冊一個 Bean 屬性
? ? ?* enable():是否啟用 Swagger,啟用后才能在瀏覽器中進行訪問
? ? ?* groupName():用于配置 API 文檔的分組
? ? ?*/
? ? @Bean
? ? public Docket docket() {
? ? ? ? return new Docket(DocumentationType.SWAGGER_2)
? ? ? ? ? ? ? ? .apiInfo(apiInfo())
? ? ? ? ? ? ? ? .enable(true)
? ? ? ? ? ? ? ? .groupName("v1")
? ? ? ? ? ? ? ? .select()
? ? ? ? ? ? ? ? // 過濾路徑
? ? ? ? ? ? ? ? //.paths(PathSelectors.ant())
? ? ? ? ? ? ? ? // 指定掃描的包
? ? ? ? ? ? ? ? .apis(RequestHandlerSelectors.basePackage("com.cunyu.springbootswaggerdemo.controller"))
? ? ? ? ? ? ? ? .build();
? ? }

? ? private ApiInfo apiInfo() {
? ? ? ? /*作者信息*/
? ? ? ? Contact contact = new Contact("村雨遙", "https://cunyu1943.github.io", "747731461@qq.com");
? ? ? ? return new ApiInfo(
? ? ? ? ? ? ? ? "Swagger 測試接口文檔",
? ? ? ? ? ? ? ? "Spring Boot 集成 Swagger 測試接口文檔",
? ? ? ? ? ? ? ? "v1.0",
? ? ? ? ? ? ? ? "https://cunyu1943.github.io",
? ? ? ? ? ? ? ? contact,
? ? ? ? ? ? ? ? "Apache 2.0",
? ? ? ? ? ? ? ? "http://www.apache.org/licenses/LICENSE-2.0",
? ? ? ? ? ? ? ? new ArrayList()
? ? ? ? );
? ? }
}

4.編寫接口

配置好 Swagger 后,在我們的項目中添加一個簡單的接口,這里以一個簡單的有參和無參接口為例。

package com.cunyu.springbootswaggerdemo.controller;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;


@Api
@RestController
public class SwaggerDemoController {
? ? @ApiOperation(value = "hello world 接口")
? ? @GetMapping("hello")
? ? public String hello() {
? ? ? ? return "hello world";
? ? }

? ? @ApiOperation(value = "有參接口")
? ? @PostMapping("demo")
? ? public String demo(@ApiParam(name = "name", value = "村雨遙", required = true) String name) {
? ? ? ? return "hello," + name;
? ? }
}

5.查看并測試接口

完成上述步驟后,我們啟動項目,然后在瀏覽器中訪問如下地址,就可以訪問我們項目的接口文檔了。

http://localhost:8080/swagger-ui.html

訪問如上地址后,如果出現(xiàn)下面的界面,說明我們 Spring Boot 集成 Swagger2 就到此成功了。

點開具體的接口,就會有這個接口的一些詳細信息,如下圖所示,一般包括:

  • 接口請求方式
  • 接口請求路徑及描述
  • 接口請求參數(shù)
  • 接口響應

如果我們要進行簡單的測試,則點擊上圖中右上方的 Try it out,然后我們就可以編輯請求參數(shù)的值,編輯完成之后點擊下方的 Execute 即可查看接口返回值。

以我給的接口為例,我傳入了一個參數(shù) name,然后執(zhí)行 demo 接口,最后會給我返回 hello,name 的結果,其中 name 是我傳入的參數(shù)值,這里我傳入了村雨遙,所以結果應該會得到 hello,村雨遙,可以看到 Swagger 測試中也給我返回了對應的結果,說明我們的接口測試成功!

注意:
如果在整合過程中出現(xiàn)如下錯誤:

org.springframework.context.ApplicationContextException:Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException

這里可能是由于 Spring Boot 版本過高導致,我寫作本文時,一開始使用的 SpringBoot 2.6.2 版本,所以出現(xiàn)了該錯誤,而當我將 SpringBoot 降級為 2.5.6 時,該錯誤就不再出現(xiàn)。所以如果你也出現(xiàn)了這個問題,也可以嘗試降低 SpringBoot 版本來解決。

總結:

以上就是本文的所有內容了,主要對 Swagger 進行了簡單介紹,并用 Spring Boot 集成 Swagger,同時還進行簡單的測試。

到此這篇關于Spring Boot 集成 Swagger2構建 API文檔的文章就介紹到這了,更多相關構建 API文檔內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 關于maven install報錯原因揭秘:parent.relativePath指向錯誤的本地POM文件

    關于maven install報錯原因揭秘:parent.relativePath指向錯誤的本地POM文件

    在使用Maven進行項目構建時,如果遇到'parent.relativePath'指向錯誤的本地POM文件的問題,可能會導致構建失敗,這通常是由于父項目POM文件的相對路徑設置錯誤、本地POM文件與父項目POM文件版本或內容不一致所致,解決方法包括檢查并修正父項目POM文件中的相對路徑設置
    2024-09-09
  • Java HashMap 如何正確遍歷并刪除元素的方法小結

    Java HashMap 如何正確遍歷并刪除元素的方法小結

    這篇文章主要介紹了Java HashMap 如何正確遍歷并刪除元素的方法小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • java多媒體文件編碼 處理工具類代碼實例

    java多媒體文件編碼 處理工具類代碼實例

    這篇文章主要介紹了java多媒體文件編碼 處理工具類使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • Spring Cloud Eureka 服務上下線監(jiān)控的實現(xiàn)

    Spring Cloud Eureka 服務上下線監(jiān)控的實現(xiàn)

    這篇文章主要介紹了Spring Cloud Eureka 服務上下線監(jiān)控的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • MapReduce中ArrayWritable 使用指南

    MapReduce中ArrayWritable 使用指南

    MapReduce是一種編程模型,用于大規(guī)模數(shù)據(jù)集的并行運算。概念"Map(映射)"和"Reduce(歸約)"和他們的主要思想,都是從函數(shù)式編程語言里借來的,還有從矢量編程語言里借來的特性。他極大地方便了編程人員在不會分布式并行編程的情況下,將自己的程序運行在分布式系統(tǒng)上。
    2014-08-08
  • java使用Hashtable過濾數(shù)組中重復值的方法

    java使用Hashtable過濾數(shù)組中重復值的方法

    這篇文章主要介紹了java使用Hashtable過濾數(shù)組中重復值的方法,涉及java數(shù)組遍歷及過濾的相關技巧,需要的朋友可以參考下
    2016-08-08
  • Java實現(xiàn)微信公眾號獲取臨時二維碼功能示例

    Java實現(xiàn)微信公眾號獲取臨時二維碼功能示例

    這篇文章主要介紹了Java實現(xiàn)微信公眾號獲取臨時二維碼功能,結合實例形式分析了java調用微信公眾號接口實現(xiàn)臨時二維碼生成功能相關操作技巧,需要的朋友可以參考下
    2019-10-10
  • Java 深入探究講解工廠方法模式

    Java 深入探究講解工廠方法模式

    工廠方法模式(FACTORY METHOD)是一種常用的類創(chuàng)建型設計模式,此模式的核心精神是封裝類中變化的部分,提取其中個性化善變的部分為獨立類,通過依賴注入以達到解耦、復用和方便后期維護拓展的目的。它的核心結構有四個角色,分別是抽象工廠、具體工廠、抽象產(chǎn)品、具體產(chǎn)品
    2022-04-04
  • java使用Stream流對自定義對象數(shù)組去重的實現(xiàn)

    java使用Stream流對自定義對象數(shù)組去重的實現(xiàn)

    本文主要介紹了java使用Stream流對自定義對象數(shù)組去重的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-04-04
  • Spring Web MVC和Hibernate的集成配置詳解

    Spring Web MVC和Hibernate的集成配置詳解

    這篇文章主要介紹了Spring Web MVC和Hibernate的集成配置詳解,具有一定借鑒價值,需要的朋友可以參考下
    2017-12-12

最新評論

隆林| 交城县| 连云港市| 巨鹿县| 仪征市| 宜阳县| 剑阁县| 威信县| 南川市| 洛川县| 湾仔区| 达孜县| 东源县| 清丰县| 江山市| 赣榆县| 南开区| 陕西省| 台北县| 安岳县| 九江县| 安新县| 黄陵县| 德安县| 武清区| 屯昌县| 陈巴尔虎旗| 巫山县| 绥芬河市| 宁陕县| 镇平县| 兴隆县| 堆龙德庆县| 九龙城区| 彭山县| 凤阳县| 克拉玛依市| 南丰县| 丰镇市| 潍坊市| 紫阳县|