一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java微服務開發(fā)之Swagger詳解

Java微服務開發(fā)之Swagger詳解

2022-02-19 14:58七元K Java教程

Swagger 是一個規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風格的 Web 服務。總體目標是使客戶端和文件系統(tǒng)作為服務器以同樣的速度來更新。文件的方法,參數(shù)和模型緊密集成到服務器端的代碼,允許API來始終保持同

一、Swagger的作用和概念

? 官方地址:https://swagger.io/

? Swagger 是一個規(guī)范且完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風格的 Web 服務以及 集成Swagger自動生成API文檔。

? Swagger 的目標是對 REST API 定義一個標準且和語言無關的接口,可以讓人和計算機擁有無須訪問源碼、文檔或網(wǎng)絡流量監(jiān)測就可以發(fā)現(xiàn)和理解服務的能力。當通過 Swagger 進行正確定義,用戶可以理解遠程服務并使用最少實現(xiàn)邏輯與遠程服務進行交互。與為底層編程所實現(xiàn)的接口類似,Swagger 消除了調(diào)用服務時可能會有的猜測。

1、Swagger 的優(yōu)勢

  • 支持 API 自動生成同步的在線文檔:使用 Swagger 后可以直接通過代碼生成文檔,不再需要自己手動編寫接口文檔了,對程序員來說非常方便,可以節(jié)約寫文檔的時間去學習新技術。
  • 提供 Web 頁面在線測試 API:光有文檔還不夠,Swagger 生成的文檔還支持在線測試。參數(shù)和格式都定好了,直接在界面上輸入?yún)?shù)對應的值即可在線測試接口。

2、SwaggerUI 特點

  1. 無依賴 UI可以在任何開發(fā)環(huán)境中使用,無論是本地還是在Web端中。
  2. 人性化允許最終開發(fā)人員輕松地進行交互,并嘗試API公開的每個操作,以方便使用。
  3. 易于瀏覽歸類整齊的文檔可快速查找并使用資源和端點。
  4. 所有瀏覽器支持 Swagger UI 在所有主要瀏覽器中均可使用,以適應各種可能的情況。
  5. 完全可定制 通過完整的源代碼訪問方式以所需方式設置和調(diào)整Swagger UI。
  6. 完整的OAS支持 可視化Swagger 2.0或OAS 3.0中定義的API

前后端分離:

現(xiàn)主流前后端開發(fā):Vue + SpringBoot

后端時代:前端只用管理靜態(tài)頁面; html==》后端。模版引擎 JSP=>后端是主力

前后端分離時代:

  • 后端:后端控制層、服務層、數(shù)據(jù)訪問層 【后端團隊】
  • 前端:前端控制層、視圖層 【前端團隊】
  • 偽造后端數(shù)據(jù),json。在后端開發(fā)前數(shù)據(jù)以及存在,不需要后端,前端工程師依舊能將項目跑起來。
  • 前后端如何交互?==>API
  • 前后端相對獨立,松耦合;
  • 前后端甚至可以部署在不同的服務器上。

產(chǎn)生一個問題

? 前后端集成聯(lián)調(diào),前端人員和后端人員無法做到 “及時協(xié)商,盡早解決”,最終導致問題集中爆發(fā);

SpringBoot中集成Swagger

解決方案:

首先指定scheme,實時更新最新的API,降低集成的風險。

早些年,制定Word計劃文檔

前后端分離:

  • 前端測試后端接口使用:Postman工具。
  • 后端提供接口:需要實時更新最新改動和消息。

這時Swagger很好的解決了這個問題

  • 號稱世界上最流行的API框架。
  • Restful API文檔在線自動生成工具 ,API文檔與API定義同步更新
  • 直接運行,可以在線測試API接口。
  • 支持多種語言 如:Java 、Php等高級語言

 

2、SpringBoot集成Swagger

1、新建一個SpringBoot-web項目

2、導包

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger2</artifactId>
  <version>2.9.2</version>
</dependency>

<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger-ui</artifactId>
  <version>2.9.2</version>
</dependency>

3、編寫HelloController,測試確保運行成功!

@RestController
public class HelloController {

 @RequestMapping(value = "/hello")
  public String Hello(){
      return "Hello Swgger!";
  }

}

4、要使用Swagger,需要編寫一個配置類SwaggerConfig來配置 Swagger

@Configuration //配置類
@EnableSwagger2// 開啟Swagger2的自動配置
public class SwaggerConfig {  
}

目錄:

Java微服務開發(fā)之Swagger詳解

5、訪問測試 :http://localhost:8080/swagger-ui.html ,看到swagger的界面;

Java微服務開發(fā)之Swagger詳解

 

3、配置Swagger

1、Swagger實例Bean是Docket,所以通過配置Docket實例來配置Swaggger

Java微服務開發(fā)之Swagger詳解

@Configuration
@EnableSwagger2 // 開啟Swagger2的自動配置
public class SwaggerConfig {
  //配置了Swagger的Docket的bean實例
  @Bean
  public Docket docket(Environment environment){
    return new Docket(DocumentationType.SWAGGER_2);
      
}

2、通過apiInfo()屬性配置文檔信息(全部)

package com.kk.swagger.config;


import com.kk.swagger.controller.HelloController;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.builders.PathSelectors;
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 // 開啟Swagger2的自動配置
public class SwaggerConfig {


  //分組
  @Bean
  public Docket docket1(){
      return new Docket(DocumentationType.SWAGGER_2).groupName("KK1");
  }

  @Bean
  public Docket docket2(){
      return new Docket(DocumentationType.SWAGGER_2).groupName("KK2");
  }

  @Bean
  public Docket docket3(){
      return new Docket(DocumentationType.SWAGGER_2).groupName("KK3");
  }



  //配置了Swagger的Docket的bean實例
  //enable 是否啟動Swagger 如果為false 則Swagger 不能再瀏覽器中訪問
  @Bean
  public Docket docket(Environment environment){

      //設置要顯示Swagger的環(huán)境
      Profiles profiles=Profiles.of("dev","test");
      //獲取項目的環(huán)境  通過environment.acceptsProfiles判斷是否處在自己的設定的環(huán)境當中
      boolean flag = environment.acceptsProfiles(profiles);


      return new Docket(DocumentationType.SWAGGER_2)
              .apiInfo(apiInfo())
              .groupName("kk")
              .enable(flag)
              .select()
              //RequestHandlerSelectors 配置要掃描接口的方式
              //basePackage 指定要掃描的包
              //any()  掃描全部
              //none()  都不掃描
              //withClassAnnotation 掃描方法上的注解  參數(shù)是一個注解的反射對象
          
              .apis(RequestHandlerSelectors.basePackage("com.kk.swagger.controller"))
//                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) 這個只會掃描類上有RestController的方法
          
              //  .paths() 過濾什么路徑
//                .paths(PathSelectors.ant("/kk/**"))
          
              .build();
  }
  private static final Contact DEFAULT_CONTACT =new Contact("KK","HTTP","[email protected]");
  //配置Swagger信息  apiInfo
  private ApiInfo apiInfo(){
      return new ApiInfo("KK的SwaggerAPI文檔", "Api Documentation",
              "1.0", "urn:tos", DEFAULT_CONTACT,
              "Apache 2.0",
              "http://www.apache.org/licenses/LICENSE-2.0", new ArrayList());
  }



}

application.properties

# 應用名稱
spring.application.name=swagger-springboot
# 應用服務 WEB 訪問端口
server.port=8080
spring.profiles.active=dev

application-dev.properties

server.port=8081

application-test.properties

server.port=8082

測試

Java微服務開發(fā)之Swagger詳解

 

4、實體配置

1、新建一個實體類

package com.kk.swagger.pojo;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
//@Api(注釋)
@ApiModel("用戶實體類")
public class User {

  @ApiModelProperty("用戶名")
  public String username;
  @ApiModelProperty("密碼")
  public String password;
}

2、只要這個實體在請求接口的返回值上(即使是泛型),都能映射到實體項中:

//只要接口中,返回值存在實體類,它就會被掃描到Swagger中
@PostMapping(value = "/user")
public User user(){
  return new User();
}	

Java微服務開發(fā)之Swagger詳解

測試

Java微服務開發(fā)之Swagger詳解

Java微服務開發(fā)之Swagger詳解

可以給請求的接口配置一些注釋

//Operation 接口  不是放在類上的  而是放在方法上的
@ApiOperation("Hello控制類,Post測試")
@PostMapping(value = "/postt")
public User postt(@ApiParam("用戶名") User user){
return user;
}

Java微服務開發(fā)之Swagger詳解

 

5、其他皮膚

導包

<!--        換膚-->
      <!-- https://mvnrepository.com/artifact/com.github.xiaoymin/swagger-bootstrap-ui -->
      <dependency>
          <groupId>com.github.xiaoymin</groupId>
          <artifactId>swagger-bootstrap-ui</artifactId>
          <version>1.9.6</version>
      </dependency>

訪問 http://localhost:8080/doc.html

還有很多,可以網(wǎng)上查查

nrepository.com/artifact/com.github.xiaoymin/swagger-bootstrap-ui -->

com.github.xiaoymin
swagger-bootstrap-ui
1.9.6

**訪問 http://localhost:8080/doc.html**

==還有很多,可以網(wǎng)上查查==

到此這篇關于Java微服務開發(fā)之Swagger詳解的文章就介紹到這了,更多相關Java Swagger內(nèi)容請搜索服務器之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_50569789/article/details/120683191

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人国产精品一级毛片视频 | 久久精品国产在热亚洲完整版 | 四虎黄色影视库 | 国产精品免费精品自在线观看 | 护士让我吃奶我扒她奶 | 嫩草影院永久一二三入口 | 日剧整部剧护妻狂魔免费观看全集 | 91麻豆影视 | 4p高h三男一女 | 狠狠做五月深爱婷婷天天综合 | 国产一级特黄在线播放 | 99年水嫩漂亮粉嫩在线播放 | 99视频有精品视频免费观看 | 美女福利视频网站 | 毛片a区| yellow高清免费观看日本 | 香蕉eeww99国产精选播放 | 免费看国产精品麻豆 | 国产精品露脸国语对白手机视频 | 波多 在线播放 | 青草欧美 | caoporm碰最新免费公开视频 | 日韩欧美一区二区三区四区 | 成人日批视频 | 国产精品久久久久久网站 | 欧美日韩国产一区二区三区在线观看 | 美女岳肉太深了使劲 | 精品国产品香蕉在线观看 | 亚洲精选在线观看 | 成人网欧美亚洲影视图片 | 忘忧草研究院一二三 | bl高h荡肉古代np| 色综合综合 | 麻豆在线传煤 | 免费观看二十女人一摸是水 | 无人知晓小说姜璟免费阅读 | 调教全程肉动画片在线观看 | 亚洲精品第二页 | 欧美牛逼aa | 毛片区| 九九热在线视频 |