国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

swagger3的配置和使用(一)

這篇具有很好參考價值的文章主要介紹了swagger3的配置和使用(一)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Swagger3簡介

swagger官網(wǎng):傳送門
swagger是一個Api框架,就是一個工具,就比如我們可以使用postman測試接口一樣,swagger主要作用是生成RESTFUL接口的文檔并且可以提供功能測試;
通過swagger可以獲取項目的api結(jié)果,生成清晰的api文檔,并可以進行一些自動化測試

Swagger的組成

  1. Swagger-tools:提供各種與Swagger進行集成和交互的工具。例如模式檢驗、Swagger 1.2文檔轉(zhuǎn)換成Swagger2.0文檔等功能。
  2. Swagger-core:用于Java/Scala的的Swagger實現(xiàn)。與JAX-RS(Jersey、Resteasy、CXF…)、Servlets和Play框架進行集成。
  3. Swagger-js: 用于JavaScript的Swagger實現(xiàn)。
  4. Swagger-node-express: Swagger模塊,用于node.js的Express web應用框架。
  5. Swagger-ui:一個無依賴的HTML、JS和CSS集合,可以為Swagger兼容API動態(tài)生成優(yōu)雅文檔。
  6. Swagger-codegen:一個模板驅(qū)動引擎,通過分析用戶Swagger資源聲明以各種語言生成客戶端代碼。

Swagger的Springboot配置

maven添加依賴

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-boot-starter</artifactId>
    <version>3.0.0</version>
</dependency>

創(chuàng)建swagger的配置類

import com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;
import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
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.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
 
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
 
/**
 * @author rongrong
 * @version 1.0
 * @description Swagger3配置
 * @date 2021/01/12 21:00
 */
@Configuration
@Profile({"dev", "local"})
@EnableOpenApi
@EnableSwaggerBootstrapUI
public class SwaggerConfig {
 
    /**
     * 是否開啟swagger配置,生產(chǎn)環(huán)境需關閉
     */
    /*    @Value("${swagger.enabled}")*/
    private boolean enable;
 
    /**
     * 創(chuàng)建API
     * http:IP:端口號/swagger-ui/index.html 原生地址
     * http:IP:端口號/doc.html bootStrap-UI地址
     */
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.OAS_30).pathMapping("/")
                // 用來創(chuàng)建該API的基本信息,展示在文檔的頁面中(自定義展示的信息)
                /*.enable(enable)*/
                .apiInfo(apiInfo())
                // 設置哪些接口暴露給Swagger展示
                .select()
                // 掃描所有有注解的api,用這種方式更靈活
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                // 掃描指定包中的swagger注解
                // .apis(RequestHandlerSelectors.basePackage("com.doctorcloud.product.web.controller"))
                // 掃描所有 .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.regex("(?!/ApiError.*).*"))
                .paths(PathSelectors.any())
                .build()
                // 支持的通訊協(xié)議集合
                .protocols(newHashSet("https", "http"))
                .securitySchemes(securitySchemes())
                .securityContexts(securityContexts());
 
    }
 
    /**
     * 支持的通訊協(xié)議集合
     *
     * @param type1
     * @param type2
     * @return
     */
    private Set<String> newHashSet(String type1, String type2) {
        Set<String> set = new HashSet<>();
        set.add(type1);
        set.add(type2);
        return set;
    }
 
    /**
     * 認證的安全上下文
     */
    private List<SecurityScheme> securitySchemes() {
        List<SecurityScheme> securitySchemes = new ArrayList<>();
        securitySchemes.add(new ApiKey("token", "token", "header"));
        return securitySchemes;
    }
 
    /**
     * 授權信息全局應用
     */
    private List<SecurityContext> securityContexts() {
        List<SecurityContext> securityContexts = new ArrayList<>();
        securityContexts.add(SecurityContext.builder()
                .securityReferences(defaultAuth())
                .forPaths(PathSelectors.any()).build());
        return securityContexts;
    }
 
     /**
     * 默認的安全上引用
     */
    private List<SecurityReference> defaultAuth() {
        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
        authorizationScopes[0] = authorizationScope;
        List<SecurityReference> securityReferences = new ArrayList<>();
        securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
        return securityReferences;
    }
 
 
    /**
     * 添加摘要信息
     * @return 返回ApiInfo對象
     */
    private ApiInfo apiInfo() {
        // 用ApiInfoBuilder進行定制
        return new ApiInfoBuilder()
                // 設置標題
                .title("接口文檔")
                // 服務條款
                .termsOfServiceUrl("NO terms of service")
                // 描述
                .description("這是SWAGGER_3生成的接口文檔")
                // 作者信息
                .contact(new Contact("rongrong", "https://www.cnblogs.com/longronglang/", "rongrong@gmail.com"))
                // 版本
                .version("版本號:V1.0")
                //協(xié)議
                .license("The Apache License")
                // 協(xié)議url
                .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
                .build();
    }
}

說明:
swagger3 摒棄了@EnableSwagger2這個注解,改成了@EnableOpenApi
swagger3 使用DocumentationType.OAS_30,swagger2版本這里是DocumentationType.SWAGGER_2

訪問路徑

http:IP:端口號/swagger-ui/index.html
swagger3,java,java,開發(fā)語言

application.yml環(huán)境配置

添加如下內(nèi)容,使得只在測試環(huán)境中才會有swagger,正式環(huán)境不顯示

spring:
  profiles:
    active: dev

API分組

Swagger默認是一個default分組:
swagger3,java,java,開發(fā)語言
可以通過分組來實現(xiàn)對不同API的分類,分組可以使用Docket的groupName屬性區(qū)分不同分組,并可以在Swagger中創(chuàng)建多個Docket的Bean實例來定義不同分組;

@Bean
public Docket docketCategory() {
    return new Docket(DocumentationType.OAS_30)
            .apiInfo(apiInfo())
            // 分組名稱
            .groupName("Category")
            .enable(true)
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.yang.takeout.backend.controller"))
            // 過濾請求,只掃描請求以/category開頭的接口
            .paths(PathSelectors.ant("/category/**"))
            .build();
}

@Bean
public Docket docketEmployee() {
    return new Docket(DocumentationType.OAS_30)
            .apiInfo(apiInfo())
            // 分組名稱
            .groupName("Employee")
            .enable(true)
            .select()
            .apis(RequestHandlerSelectors.basePackage("com.yang.takeout.backend.controller"))
            // 過濾請求,只掃描請求以/employee開頭的接口
            .paths(PathSelectors.ant("/employee/**"))
            .build();
}

這里我只配置了兩個分組,可以多創(chuàng)建幾個Docket實例實現(xiàn)多分組;

分組效果:
swagger3,java,java,開發(fā)語言

Swagger常用注解

注解說明

用于類上

@Api:用在請求的類上,表示對類的說明
tags=“說明該類的作用,可以在UI界面上看到的注解”
value=“該參數(shù)沒什么意義,在UI界面上也看到,所以不需要配置”

用于方法上

@ApiOperation:用在請求的方法上,說明方法的用途、作用
value=“說明方法的用途、作用”
notes=“方法的備注說明”
swagger3,java,java,開發(fā)語言

@ApiImplicitParams:用在請求的方法上,表示一組參數(shù)說明
@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一個請求參數(shù)的各個方面
name:參數(shù)名
value:參數(shù)的漢字說明、解釋
required:參數(shù)是否必須傳
paramType:參數(shù)放在哪個地方
· header --> 請求參數(shù)的獲?。篅RequestHeader
· query --> 請求參數(shù)的獲?。篅RequestParam
· path(用于restful接口)–> 請求參數(shù)的獲?。篅PathVariable
· div(不常用)
· form(不常用)
dataType:參數(shù)類型,默認String,其它值dataType=“Integer”
defaultValue:參數(shù)的默認值

@Api(tags="用戶模塊")
@Controller
public class UserController {

	@ApiOperation(value="用戶登錄",notes="隨邊說點啥")
	@ApiImplicitParams({
		@ApiImplicitParam(name="mobile",value="手機號",required=true,paramType="form"),
		@ApiImplicitParam(name="password",value="密碼",required=true,paramType="form"),
		@ApiImplicitParam(name="age",value="年齡",required=true,paramType="form",dataType="Integer")
	})
	@PostMapping("/login")
	public JsonResult login(@RequestParam String mobile, @RequestParam String password,
	@RequestParam Integer age){
		//...
	    return JsonResult.ok(map);
	}
}

@ApiResponses:用在請求的方法上,表示一組響應
@ApiResponse:用在@ApiResponses中,一般用于表達一個錯誤的響應信息
code:數(shù)字,例如400
message:信息,例如"請求參數(shù)沒填好"
response:拋出異常的類

@Api(tags="用戶模塊")
@Controller
public class UserController {

	@ApiOperation("獲取用戶信息")
	@ApiImplicitParams({
		@ApiImplicitParam(paramType="query", name="userId", dataType="String", required=true, value="用戶Id")
	}) 
	@ApiResponses({
		@ApiResponse(code = 200, message = "請求成功"),
		@ApiResponse(code = 400, message = "請求參數(shù)沒填好"),
		@ApiResponse(code = 404, message = "請求路徑?jīng)]有或頁面跳轉(zhuǎn)路徑不對")
	}) 
	@ResponseBody
	@RequestMapping("/list")
	public JsonResult list(@RequestParam String userId) {
		...
		return JsonResult.ok().put("page", pageUtil);
	}
}

用于對象類

@ApiModel:用于響應類上,表示一個返回響應數(shù)據(jù)的信息
(這種一般用在post創(chuàng)建的時候,使用@RequestBody這樣的場景,
請求參數(shù)無法使用@ApiImplicitParam注解進行描述的時候)
@ApiModelProperty:用在屬性上,描述響應類的屬性
value–字段說明
name–重寫屬性名字
dataType–重寫屬性類型
required–是否必填
example–舉例說明
hidden–隱藏

@ApiModel的功能:
1、當請求數(shù)據(jù)描述,即 @RequestBody 時, 用于封裝請求(包括數(shù)據(jù)的各種校驗)數(shù)據(jù);
2、當響應值是對象時,即 @ResponseBody 時,用于返回值對象的描述。
當請求數(shù)據(jù)描述時, @RequestBody 時的使用

@ApiModel(description = "用戶登錄")
public class UserLoginVO implements Serializable {

	private static final long serialVersionUID = 1L;

	@ApiModelProperty(value = "用戶名",required=true)	
	private String username;

	@ApiModelProperty(value = "密碼",required=true)	
	private String password;
	
	// getter/setter省略
}
@Api(tags="用戶模塊")
@Controller
public class UserController {

	@ApiOperation(value = "用戶登錄", notes = "")	
	@PostMapping(value = "/login")
	public R login(@RequestBody UserLoginVO userLoginVO) {
		User user=userSerivce.login(userLoginVO);
		return R.okData(user);
	}
}

借鑒:
【1】SpringBoot從0到實戰(zhàn)8:簡單使用Swagger生成接口開發(fā)文檔
【2】 Swagger3 常用配置注解講解 結(jié)合SpringBoot2
【3】Swagger筆記—Swagger3詳細配置
【4】Swagger3的基本使用文章來源地址http://www.zghlxwxcb.cn/news/detail-720178.html

到了這里,關于swagger3的配置和使用(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • springboot2.7以上版本配置swagger3.0.0版本瀏覽器無法打開swagger-ui

    1.最實用解決方式:將pom里的swagger依賴降到2.9.0即可 過低無法啟動項目 1.2 Springboot2.6以后將SpringMVC 默認路徑匹配策略從AntPathMatcher 更改為PathPatternParser Springfox 使用的路徑匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher 2.3.0.0版本swagger2訪問地址為:http://loca

    2024年02月11日
    瀏覽(22)
  • Swagger3學習筆記

    Swagger3學習筆記

    參考https://blog.csdn.net/YXXXYX/article/details/124952856 https://blog.csdn.net/m0_53157173/article/details/119454044 不加會報錯 訪問http://localhost:8080/swagger-ui/index.html Docket 是一個配置類,用于配置 Swagger 的文檔生成規(guī)則。通過創(chuàng)建一個 Docket 實例,您可以指定要生成的文檔的詳細信息,例如 API 的基

    2024年02月13日
    瀏覽(24)
  • SpringCloudGateway整合swagger3文檔

    SpringCloudGateway整合swagger3文檔

    ? ? ? ? ?SpringCloud項目中,微服務模塊和網(wǎng)關模塊必不可少。按照以前SpringBoot的模式,單個服務擁有自己的Api文檔(Swagger文檔),引入微服務后,多文檔管理成了一個問題。我們需要一個統(tǒng)一的入口方便前端同學查看。本篇文章就是把各個微服務的swagger-api文檔,集成到網(wǎng)

    2024年02月09日
    瀏覽(22)
  • springboot 集成 Swagger3(速通)

    springboot 集成 Swagger3(速通)

    → springboot 集成 Swagger2 ← 這次直接使用 2.5.6 的 spring-boot 。 依賴: 啟動類加注解 @EnableOpenApi 新建測試類 訪問 http://127.0.0.1:8080/swagger-ui.html ,沒錯,又是 Error 頁面 此部分參考:https://blog.csdn.net/mmmm0584/article/details/117786055 在swagger3.0中,swagger-ui.html的位置發(fā)生了變化: ??

    2024年02月03日
    瀏覽(22)
  • spring boot 集成 swagger3

    spring boot 集成 swagger3

    ? ????????Swagger 3是一種開源的API描述工具,它可以幫助開發(fā)人員設計、構建、文檔化和測試API。Swagger 3支持多種編程語言和框架,包括Java、Node.js、Python、Ruby等,并提供了許多集成工具和插件,例如Postman、Apigee等。 Swagger 3使用OpenAPI規(guī)范來描述API,這是一種通用的API描述

    2024年02月06日
    瀏覽(24)
  • Springboot項目集成Swagger3.0

    Springboot項目集成Swagger3.0

    開發(fā)時經(jīng)常會出現(xiàn)下面這種情況——“不熟”的接口 因為業(yè)務的需要接口文檔可能會發(fā)生改變,前后端交互上經(jīng)常會出現(xiàn)參數(shù)不符的情況,通過Excel或者Word維護接口文檔,會存在時效性較差的問題,而Swagger正是解決這一痛點的利器。在代碼中加入注解,可以實時更新接口。

    2024年02月15日
    瀏覽(25)
  • SpringBoot學習之集成Swagger3(二十七)

    SpringBoot學習之集成Swagger3(二十七)

    一、Maven配置 注意swagger的版本號是3.0.0版本以上才可以,這里我們就選擇3.0.0版本 ?完整的Maven配置如下(僅供參考): project xmlns=\\\"http://maven.apache.org/POM/4.0.0\\\" xmlns:xsi=\\\"http://www.w3.org/2001/XMLSchema-instance\\\" xsi:schemaLocation=\\\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\\\"

    2024年02月05日
    瀏覽(25)
  • SpringBoot——2.7.3版本整合Swagger3

    SpringBoot——2.7.3版本整合Swagger3

    Swagger2(基于openApi3)已經(jīng)在17年停止維護了,取而代之的是 sagger3(基于openApi3),而國內(nèi)幾乎沒有 sagger3使用的文檔,百度搜出來的大部分都是swagger2的使用,這篇文章將介紹如何在 java 中使用 openApi3(swagger3)。 Open API OpenApi是業(yè)界真正的 api 文檔標準,其是由 Swagger 來維護

    2024年02月11日
    瀏覽(26)
  • swagger3 快速整合 springboot 2.6.15

    2024年02月11日
    瀏覽(24)
  • Spring Boot 3項目集成Swagger3教程

    歡迎來到我的小天地,這里是我記錄技術點滴、分享學習心得的地方。?? ??? 技能清單 編程語言 :Java、C、C++、Python、Go、 前端技術 :Jquery、Vue.js、React、uni-app、Echarts UI設計 : Element-ui、Antd、Color-ui 后端技術 :Spring Boot、Mybatis-plus、Swagger 移動開發(fā) :Android 操作系統(tǒng) :

    2024年04月17日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包