<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Swagger UI簡介

          共 13625字,需瀏覽 28分鐘

           ·

          2021-05-28 10:58

          點擊上方藍(lán)色字體,選擇“標(biāo)星公眾號”

          優(yōu)質(zhì)文章,第一時間送達(dá)

          Swagger UI允許任何人(無論您是開發(fā)團(tuán)隊還是最終用戶)都可以可視化API資源并與之交互,而無需任何實現(xiàn)邏輯。它是根據(jù)您的OpenAPI(以前稱為Swagger)規(guī)范自動生成的,具有可視化文檔,可簡化后端實現(xiàn)和客戶端使用。

          SwaggerUI 特點


          • 無依賴 UI可以在任何開發(fā)環(huán)境中使用,無論是本地還是在Web端中。

          • 人性化 允許最終開發(fā)人員輕松地進(jìn)行交互,并嘗試API公開的每個操作,以方便使用。

          • 易于瀏覽 歸類整齊的文檔可快速查找并使用資源和端點。

          • 所有瀏覽器支持 Swagger UI 在所有主要瀏覽器中均可使用,以適應(yīng)各種可能的情況。

          • 完全可定制 通過完整的源代碼訪問方式以所需方式設(shè)置和調(diào)整Swagger UI。

          • 完整的OAS支持 可視化Swagger 2.0或OAS 3.0中定義的API。

          前后端分離

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

          前后端分離時代:

          • 后端:后端控制層、服務(wù)層、數(shù)據(jù)訪問層 【后端團(tuán)隊】

          • 前端:前端控制層、視圖層 【前端團(tuán)隊】

            • 偽造后端數(shù)據(jù),json。在后端開發(fā)前數(shù)據(jù)以及存在,不需要后端,前端工程師依舊能將項目跑起來。

          • 前后端如何交互?==>API

          • 前后端相對獨立,松耦合;

          • 前后端甚至可以部署在不同的服務(wù)器上。

          產(chǎn)生一個問題

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

          解決方案:

          • 首先指定schema[計劃的提綱],實時更新最新的API,降低集成的風(fēng)險。

          • 早些年,制定Word計劃文檔

          • 前后端分離:

            • 前端測試后端接口使用:Postman工具。

            • 后端提供接口:需要實時更新最新改動和消息。

          Swagger登場

          • 號稱世界上最流行的API框架。

          • Restful API文檔在線自動生成工具 

            API文檔與API定義同步更新

          • 直接運行,可以在線測試API接口。

          • 支持多種語言 如:Java 、PHP…

          官網(wǎng)

          https://swagger.io/

          在項目只能使用SwaggerUI

          需要使用Springfox,配置的組件有

          • Swagger 2

          • UI 顯示頁面

          springboot集成Swagger

          1.idea新建SpringBoot-Web工程
          2.POM文件中導(dǎo)入springfox-swagger2和springfox-swagger-ui

          </dependency>
            <groupId>io.springfox</groupId>
              <artifactId>springfox-swagger-ui</artifactId>
              <version>2.9.2</version>
          </dependency>

          <dependency>
              <groupId>io.springfox</groupId>
              <artifactId>springfox-swagger2</artifactId>
              <version>2.9.2</version>
          </dependency>
          在這里插入代碼片

          3.編寫一個測試Controller 測試SpringBoot工程搭建是否成功。
          4.配置Swagger 編寫Config文件

          • 新建一個名為config的Package包

          • 創(chuàng)建SwaggerConfig配置類

          • @Configuration 表明這是一個配置類

          • @EnableSwagger2 開啟Swagger2

           @Configuration 
          @EnableSwagger2  //開啟swagger2
          public class SwaggerConfig {
           
          }

          5 、測試運行
          瀏覽器打開 http://localhost:8080/swagger-ui.html

          Swagger配置掃描接口

          • 配置接口掃描與作者信息
            使用Dokcet對象中的 .select()方法

          /**
               * 配置了Swagger 的Docket的bean實例,掃描接口的位置
               * .apis
               *   RequestHandlerSelectors 配置swagger掃描接口的方式
               *      basePackage() 指定要掃描哪些包
               *      any() 全部都掃描
               *      none() 全部不掃描
               *      withClassAnnotation() 掃描類上的注解 參數(shù)是一個注解的反射對象
               *      withMethodAnnotation() 掃描包上的注解
               * .paths
               *   PathSelectors 路徑掃描接口
               *      ant 配置以xxx 開頭的路徑
               * @return
               */
              @Bean
              public Docket docket( ){
              
                  return  new Docket(DocumentationType.SWAGGER_2)
                          .apiInfo(apiInfo())
                          .groupName("James")
                          .select()
                          .apis(RequestHandlerSelectors.basePackage("com.study.swagger.controller"))
                          //.paths(PathSelectors.ant("/hello/**"))
                          .build();//構(gòu)建者模式
              }
              /**
               * 配置Swagger信息 apiinfo
               * @return
               */
              private ApiInfo apiInfo(){
                  //配置作者信息
                  Contact DEFAULT_CONTACT = new Contact("James""https://blog.csdn.net/zhanshixiang/""[email protected]");
                  return  new ApiInfo(
                          "James 的Swagger API文檔",
                          "碼出高效",
                          "v1.0",
                          "https://blog.csdn.net/zhanshixiang/",
                          DEFAULT_CONTACT,
                          "Apache 2.0",
                          "http://www.apache.org/licenses/LICENSE-2.0",
                          new ArrayList());
              }

          配置是否自動啟動Swagger

          在開發(fā)環(huán)境開啟SwaggerUI ,生產(chǎn)環(huán)境關(guān)閉SwaggerUI 是因為開發(fā)環(huán)境是內(nèi)部人員,生產(chǎn)環(huán)境是客戶。為了程序的安全性需要關(guān)閉SwagggerUI

          /**
               * 配置了Swagger 的Docket的bean實例,掃描接口的位置
               * .apis
               *   RequestHandlerSelectors 配置swagger掃描接口的方式
               *      basePackage() 指定要掃描哪些包
               *      any() 全部都掃描
               *      none() 全部不掃描
               *      withClassAnnotation() 掃描類上的注解 參數(shù)是一個注解的反射對象
               *      withMethodAnnotation() 掃描包上的注解
               * .paths
               *   PathSelectors 路徑掃描接口
               *      ant 配置以xxx 開頭的路徑
               * @return
               */
              @Bean
              public Docket docket(Environment environment){

                  //設(shè)置要顯示的Swagger 環(huán)境
                  Profiles profiles =Profiles.of("dev","test");
                  /**
                   * 通過 environment.acceptsProfiles 返回的boolean值判斷是否處在自己所設(shè)定的環(huán)境中
                   */
                  boolean flag = environment.acceptsProfiles(profiles);
                  System.out.println(flag);
                  return  new Docket(DocumentationType.SWAGGER_2)
                          .apiInfo(apiInfo())
                          .groupName("James")
                          //.enable(flag) //enable配置是否自動啟動swagger 如果為False則為不啟動,瀏覽器中不能訪問Swagger
                          .select()
                          .apis(RequestHandlerSelectors.basePackage("com.study.swagger.controller"))
                          //.paths(PathSelectors.ant("/hello/**"))
                          .build();//構(gòu)建者模式
              }

              /**
               * 配置Swagger信息 apiinfo
               * @return
               */
              private ApiInfo apiInfo(){

                  //配置作者信息
                  Contact DEFAULT_CONTACT = new Contact("James""https://blog.csdn.net/zhanshixiang/""[email protected]");
                  return  new ApiInfo(
                          "James 的Swagger API文檔",
                          "碼出高效",
                          "v1.0",
                          "https://blog.csdn.net/zhanshixiang/",
                          DEFAULT_CONTACT,
                          "Apache 2.0",
                          "http://www.apache.org/licenses/LICENSE-2.0",
                          new ArrayList());

              }

          • 創(chuàng)建三個properties文件
            application.properties

          # 激活開發(fā)環(huán)境
          spring.profiles.active=dev


          application-dev.properties 開發(fā)環(huán)境

          server.port=8082

          application-properties 生產(chǎn)環(huán)境

          server.port=8083

          配置API分組

          在協(xié)同開發(fā)時,每個開發(fā)人員都擁有一個屬于自己的API組

          .groupName("test")

          問題:如何配置多個分組?

          編寫多個Docket 設(shè)置不同Docket方法名

          /**
               * 開發(fā)A組的接口
               * @return
               */
              @Bean
              public Docket docketA(){
                  return  new Docket(DocumentationType.SWAGGER_2)
                          .groupName("A");
              }

              /**
               * 開發(fā)B組的接口
               * @return
               */
              @Bean
              public Docket docketB(){
                  return  new Docket(DocumentationType.SWAGGER_2)
                          .groupName("B");
              }

              /**
               * 開發(fā)C組的接口
               * @return
               */
              @Bean
              public Docket docketC(){
                  return  new Docket(DocumentationType.SWAGGER_2)
                          .groupName("C");
              }

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

          可以看到分組上有新的組了

          配置實體類信息

          @ApiModel("用戶實體類")
          public class User implements Serializable {

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

          配置接口方法

          @Api("Hello控制類")
          @RestController
          @RequestMapping("hello")
          public class HelloController {


              @GetMapping(value = "say")
              public String hello() {
                  return "hello ";
              }


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

              /**
               * ApiOperation接口,不是放在類上的,是方法
               * @return
               */
              @ApiOperation("hello控制類")
              @GetMapping(value = "/hello2")
              public String hello2(@ApiParam("用戶名") String username){
                  return "hello"+username;
              }

              @ApiOperation("Post測試類")
              @PostMapping(value = "/post")
              public User post(@ApiParam("用戶") User user){
                  return user;
              }
              
          }



          版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。

          本文鏈接:

          https://blog.csdn.net/zhanshixiang/article/details/104605292







          瀏覽 130
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  麻豆久久久久 | 欧美 日韩 国产 成人 | 91视频在线看 | 超碰超碰成人 | 五月丁香涩涩婷婷 |