欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2021年10月14日 09:56:45   作者:七元K  
Swagger 是一個(gè)規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化 RESTful 風(fēng)格的 Web 服務(wù)。總體目標(biāo)是使客戶端和文件系統(tǒng)作為服務(wù)器以同樣的速度來(lái)更新。文件的方法,參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API來(lái)始終保持同步

一、Swagger的作用和概念

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

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

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

1、Swagger 的優(yōu)勢(shì)

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

2、SwaggerUI 特點(diǎn)

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

前后端分離:

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

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

前后端分離時(shí)代:

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

產(chǎn)生一個(gè)問(wèn)題

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

SpringBoot中集成Swagger

解決方案:

首先指定scheme,實(shí)時(shí)更新最新的API,降低集成的風(fēng)險(xiǎn)。

早些年,制定Word計(jì)劃文檔

前后端分離:

  • 前端測(cè)試后端接口使用:Postman工具。
  • 后端提供接口:需要實(shí)時(shí)更新最新改動(dòng)和消息。

這時(shí)Swagger很好的解決了這個(gè)問(wèn)題

  • 號(hào)稱世界上最流行的API框架。
  • Restful API文檔在線自動(dòng)生成工具 ,API文檔與API定義同步更新
  • 直接運(yùn)行,可以在線測(cè)試API接口。
  • 支持多種語(yǔ)言 如:Java 、Php等高級(jí)語(yǔ)言

2、SpringBoot集成Swagger

1、新建一個(gè)SpringBoot-web項(xiàng)目

2、導(dǎo)包

<!-- 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,測(cè)試確保運(yùn)行成功!

@RestController
public class HelloController {

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

}

4、要使用Swagger,需要編寫一個(gè)配置類SwaggerConfig來(lái)配置 Swagger

@Configuration //配置類
@EnableSwagger2// 開啟Swagger2的自動(dòng)配置
public class SwaggerConfig {  
}

目錄:

img

5、訪問(wèn)測(cè)試 :http://localhost:8080/swagger-ui.html ,看到swagger的界面;

img

3、配置Swagger

1、Swagger實(shí)例Bean是Docket,所以通過(guò)配置Docket實(shí)例來(lái)配置Swaggger

img

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

2、通過(guò)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的自動(dòng)配置
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實(shí)例
    //enable 是否啟動(dòng)Swagger 如果為false 則Swagger 不能再瀏覽器中訪問(wèn)
    @Bean
    public Docket docket(Environment environment){

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


        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .groupName("kk")
                .enable(flag)
                .select()
                //RequestHandlerSelectors 配置要掃描接口的方式
                //basePackage 指定要掃描的包
                //any()  掃描全部
                //none()  都不掃描
                //withClassAnnotation 掃描方法上的注解  參數(shù)是一個(gè)注解的反射對(duì)象
            
                .apis(RequestHandlerSelectors.basePackage("com.kk.swagger.controller"))
//                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class)) 這個(gè)只會(huì)掃描類上有RestController的方法
            
                //  .paths() 過(guò)濾什么路徑
//                .paths(PathSelectors.ant("/kk/**"))
            
                .build();
    }
    private static final Contact DEFAULT_CONTACT =new Contact("KK","HTTP","666@qq.com");
    //配置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

# 應(yīng)用名稱
spring.application.name=swagger-springboot
# 應(yīng)用服務(wù) WEB 訪問(wèn)端口
server.port=8080
spring.profiles.active=dev

application-dev.properties

server.port=8081

application-test.properties

server.port=8082

測(cè)試

img

4、實(shí)體配置

1、新建一個(gè)實(shí)體類

package com.kk.swagger.pojo;


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

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

2、只要這個(gè)實(shí)體在請(qǐng)求接口的返回值上(即使是泛型),都能映射到實(shí)體項(xiàng)中:

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

img

測(cè)試

img

img

可以給請(qǐng)求的接口配置一些注釋

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

img

5、其他皮膚

導(dǎo)包

<!--        換膚-->
        <!-- 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>

訪問(wèn) 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

**訪問(wèn) http://localhost:8080/doc.html**

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

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

相關(guān)文章

  • 基于Mybatis映射的一點(diǎn)心得(分享)

    基于Mybatis映射的一點(diǎn)心得(分享)

    下面小編就為大家?guī)?lái)一篇基于Mybatis映射的一點(diǎn)心得(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • 因Spring AOP導(dǎo)致@Autowired依賴注入失敗的解決方法

    因Spring AOP導(dǎo)致@Autowired依賴注入失敗的解決方法

    這篇文章主要給大家介紹了因Spring AOP導(dǎo)致@Autowired依賴注入失敗的解決方法,文中通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-07-07
  • Maven deploy plugin使用方式

    Maven deploy plugin使用方式

    這篇文章主要介紹了Maven deploy plugin使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 詳解Java8中CompletableFuture類的使用

    詳解Java8中CompletableFuture類的使用

    Java?8中引入了CompletableFuture類,它是一種方便的異步編程工具,可以處理各種異步操作,本文將詳細(xì)介紹CompletableFuture的使用方式,希望對(duì)大家有所幫助
    2023-04-04
  • spring boot 使用Aop通知打印控制器請(qǐng)求報(bào)文和返回報(bào)文問(wèn)題

    spring boot 使用Aop通知打印控制器請(qǐng)求報(bào)文和返回報(bào)文問(wèn)題

    這篇文章主要介紹了spring-boot 使用Aop通知打印控制器請(qǐng)求報(bào)文和返回報(bào)文,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-04-04
  • JetBrains?產(chǎn)品輸入激活碼?Key?is?invalid?完美解決方案

    JetBrains?產(chǎn)品輸入激活碼?Key?is?invalid?完美解決方案

    JetBrains?系列產(chǎn)品(IDEA、Pycharm?等)使用本站破解教程?(opens?new?window),在輸入激活碼時(shí),部分小伙伴反應(yīng)說(shuō)提示?Key?is?invalid?無(wú)法激活,今天小編給大家分享完美解決方案,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • Java中valueOf和parseInt的區(qū)別詳解

    Java中valueOf和parseInt的區(qū)別詳解

    這篇文章主要介紹了Java中valueOf和parseInt的區(qū)別詳解,在編程中,遇到類型轉(zhuǎn)換,好像會(huì)經(jīng)常用到 parseInt 和 valueOf,當(dāng)然這里只拿 Integer 類型進(jìn)行陳述,其他類型也是雷同的,需要的朋友可以參考下
    2024-01-01
  • springboot整合kaptcha驗(yàn)證碼的示例代碼

    springboot整合kaptcha驗(yàn)證碼的示例代碼

    kaptcha是一個(gè)很有用的驗(yàn)證碼生成工具,本篇文章主要介紹了springboot整合kaptcha驗(yàn)證碼的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Spring中的@RestControllerAdvice注解使用解析

    Spring中的@RestControllerAdvice注解使用解析

    這篇文章主要介紹了Spring中的@RestControllerAdvice注解使用解析,@RestControllerAdvice?是?Spring?框架中一個(gè)用于統(tǒng)一處理控制器異常和返回結(jié)果的注解,它可以被用來(lái)定義全局異常處理程序和全局響應(yīng)結(jié)果處理程序,需要的朋友可以參考下
    2024-01-01
  • JAVA中的字符串常量池使用操作代碼

    JAVA中的字符串常量池使用操作代碼

    Java中的字符串常量池是Java堆中的一塊特殊存儲(chǔ)區(qū)域,用于存儲(chǔ)字符串。它的實(shí)現(xiàn)是為了提高字符串操作的性能并節(jié)省內(nèi)存,這篇文章主要介紹了JAVA中的字符串常量池,需要的朋友可以參考下
    2022-12-12

最新評(píng)論