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

【Swagger】常用注解的使用、SpringBoot的整合及生產(chǎn)環(huán)境下屏蔽Swagger

這篇具有很好參考價值的文章主要介紹了【Swagger】常用注解的使用、SpringBoot的整合及生產(chǎn)環(huán)境下屏蔽Swagger。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、引言

1、什么是Swagger?

????????Swagger是一個規(guī)范和完整的框架,用于生成、描述、調(diào)用和可視化RESTful風(fēng)格的Web服務(wù)。它使得部署管理和使用功能強大的API從未如此簡單。Swagger讓文件的方法、參數(shù)和模型緊密集成到服務(wù)器端的代碼,允許API始終保持同步。

2、常用注解有哪些?

在軟件開發(fā)中,常用注解(Annotation)主要用在Java中,并且用于對代碼進行標(biāo)記和說明。下面列舉了一些常見的Java注解:

  1. 與模型相關(guān)的注解

    • @ApiModel:用于模型類上,對模型類做注釋。
    • @ApiModelProperty:用于屬性上,對屬性做注釋。
  2. 與接口相關(guān)的注解

    • @Api:用于controller上,對controller進行注釋。
    • @ApiOperation:用于API方法上,對該API做注釋,說明API的作用。
    • @ApiImplicitParams:用來包含API的一組參數(shù)注解,可以簡單的理解為參數(shù)注解的集合聲明。
    • @ApiImplicitParam:用在@ApiImplicitParams注解中,也可以單獨使用,說明一個請求參數(shù)的各個方面。
  3. 其他常用注解

    • @JsonProperty:用于屬性上、set/get方法上,該屬性序列化后可重命名。
    • @JsonFormat:用于屬性或者方法上,可格式化日期屬性的值。
    • @Date注解:使用這個注解可以代替實體類屬性的get和set方法。
    • @Mapper注解:這個接口在編譯時會生成相應(yīng)的實現(xiàn)類。
    • @RequestMapping:指定訪問方式,如果訪問方式不匹配,則無法進行訪問。

二、SpringBoot整合Swagger

1、導(dǎo)入依賴

pom.xml

        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>swagger-bootstrap-ui</artifactId>
            <version>1.8.5</version>
        </dependency>

        <!-- 使用1.5.22-->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-models</artifactId>
            <version>1.5.22</version>
        </dependency>

2、創(chuàng)建Swagger配置類

package com.wfzldr.swagger2;

import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration//和spring boot一起加載
@EnableSwagger2
//@Profile({"dev", "test"}) // dev(開發(fā))、test(測試)、prod(生產(chǎn))
public class Swagger2Configuration extends WebMvcConfigurationSupport {

    /**
     * 創(chuàng)建該API的基本信息  http://項目實際地址/doc.html
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
//                項目名
                .title("SpringBoot集成Swagger2")
//                系統(tǒng)的介紹
                .description("測試系統(tǒng)")
//                公司的首頁等等
                .termsOfServiceUrl("https://www.baidu.com")
//                sawgger的版本
                .version("1.0.0")
                .build();
    }

    /**
     * 創(chuàng)建API應(yīng)用
     */
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
//                基于那個包生成文檔
                .apis(RequestHandlerSelectors.basePackage("com.wfzldr.swagger2.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

}

3、案例

@Api

@Api注解用在類上,說明該類的作用??梢詷?biāo)記一個Controller類做為swagger文檔資源。

屬性 說明
value url的路徑值
tags 如果設(shè)置這個值、value的值會被覆蓋
produces 返回的格式類型例如:"application/json, application/xml"
consumes 接收請求參數(shù)的類型例如:"application/json, application/xml"
protocols Possible values: http, https, ws, wss.
authorizations 高級特性認(rèn)證時配置

案例演示

@RestController
@RequestMapping("/book")
@Api(value = "書籍管理", tags = "書籍管理")//設(shè)置tags這個值、value的值會被覆蓋
public class BookController {

}

【Swagger】常用注解的使用、SpringBoot的整合及生產(chǎn)環(huán)境下屏蔽Swagger,spring boot,java,spring,tcp/ip,測試工具,開發(fā)語言

@ApiOperation

@ApiOperation注解用在方法上,說明方法的作用,每一個url資源的定義。

屬性 說明
value url的路徑值
tags 如果設(shè)置這個值、value的值會被覆蓋
produces 返回的格式類型例如:"application/json, application/xml"
consumes 接收請求參數(shù)的類型例如:"application/json, application/xml"
hidden 是否在文檔中顯示
notes 注釋說明
response 返回的對象
responseContainer 這些對象是有效的 "List", "Set" or "Map".,其他無效
responseReference 指定對響應(yīng)類型的引用。指定的引用可以是本地的,也可以是遠(yuǎn)程的*將按原樣使用,并覆蓋任何指定的response()類
responseHeaders 響應(yīng)旁邊提供的可能標(biāo)題列表
httpMethod "GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS" and "PATCH"
code http的狀態(tài)碼 默認(rèn) 200

案例演示

    @GetMapping("/list")
    @ApiOperation(value = "查詢所有的書籍")
    public JsonResponseBody<List<Book>> list() {
        ...
        return JsonResponseBody.success(list);
    }

【Swagger】常用注解的使用、SpringBoot的整合及生產(chǎn)環(huán)境下屏蔽Swagger,spring boot,java,spring,tcp/ip,測試工具,開發(fā)語言

@ApiImplicitParam

@ApilmplicitParam 注解用來描述一個參數(shù),可以配置參數(shù)的中文含義,也可以給參數(shù)設(shè)置默認(rèn)值,這樣在接口測試的時候可以避免手動輸入;

屬性 說明
paramType 參數(shù)放在哪個地方
name 參數(shù)名稱
value 參數(shù)代表的含義
dataType 參數(shù)類型
dataTypeClass 參數(shù)類型
required 是否必要
defaultValue 參數(shù)的默認(rèn)值

paramType

類型 作用
path 以地址的形式提交數(shù)據(jù),用于restful接口。請求參數(shù)采用@PathVariable獲取
query 直接跟參數(shù)完成自動映射賦值。請求參數(shù)可采用@RequestParam獲取
body 以流的形式提交,僅支持POST。請求參數(shù)采用@RequestBody獲取
header 參數(shù)在request headers里邊提交。請求參數(shù)采用@RequestHeader獲取
form 以form表單的形式提交,僅支持POST。

案例演示

@ApiOperation(value="查詢單個書本信息",notes = "查詢單個書本信息")
@ApiImplicitParam(value="書本ID",name="bookid",required = true,dataType = "String",defaultValue = "8f46b5018a6811e9a9c528d24413c293" )
@GetMapping("/querySingleBook")
public Book querySingleBook(String bookid){
 ? ?JsonResponseBody<Book> json = bookService.selectByPrimaryKey(bookid);
 ? ?return json.getData();
}

@ApiImplicitParams

@ApilmplicitParams 如果有多個參數(shù),則需要使用多個 @ApilmplicitParam 注解來描述, 多個 @ApilmplicitParam 注解需要放在一個 @ApilmplicitParams 注解中;

案例演示

@GetMapping("/listAndName")
    @ApiOperation(value = "模糊查詢書籍")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "name", value = "書本名稱", required = true, dataType = "String"),
            @ApiImplicitParam(name = "price", value = "書本價格", required = true, dataType = "Double"),
    })
    public JsonResponseBody<List<Book>> listAndName(@ApiParam(name = "name", value = "書名") String name, double price) {
       ...
        return JsonResponseBody.success(list);
    }

【Swagger】常用注解的使用、SpringBoot的整合及生產(chǎn)環(huán)境下屏蔽Swagger,spring boot,java,spring,tcp/ip,測試工具,開發(fā)語言

@ApiModel和@ApiModelProperty

@ApiModel注解描述一個Model的信息(這種一般用在post創(chuàng)建的時候,使用@RequestBody這樣的場景,請求參數(shù)無法使用 @ApiImplicitParam注解進行描述的時候;

@ApiModelProperty注解描述一個model的屬性。

屬性 說明
value 字段說明
name 參數(shù)名稱
dataType 參數(shù)類型
hidden 在文檔中隱藏
required 是否必要
example 舉例說明
notes 注釋說明

案例演示

@ApiOperation(value="修改書本信息",notes = "修改書本信息")
@PostMapping("/editBook")
public JsonResponseBody<?> editBook(@RequestBody Book book){
 ? ?return bookService.updateByPrimaryKey(book);
}
 

注意:在這里可以不使用@ApiImplicitParam標(biāo)注Swagger中的參數(shù)信息,因為在這里的輸入?yún)?shù)是實體對象,而在實體對象中已經(jīng)使用@ApiModel和@ApiModelProperty注解進行了標(biāo)識。

package com.wfzldr.swagger2.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * 書籍表
 * </p>
 *
 * @author wfzldr
 * @since 2023-12-19
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("t_book")
@ApiModel("書籍信息")
public class Book implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 書籍id
     */
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty("書籍編號")
    private Long id;

    /**
     * 書名
     */
    @TableField("bookname")
    @ApiModelProperty("書名")
    private String bookname;

    /**
     * 價格
     */
    @TableField("price")
    @ApiModelProperty("價格")
    private Float price;

    /**
     * 書籍類型
     */
    @TableField("booktype")
    @ApiModelProperty(value = "書籍類型")//hidden = true用來隱藏
    private String booktype;


}
 
 

@ApiParam

作用在方法的參數(shù)上,用來描述接口的參數(shù)信息(一個參設(shè)置一個)

@ApiParam必須與@RequestParam@PathVariable@RequestHeader一起使用。

屬性 說明
name 參數(shù)名稱
value 參數(shù)簡單描述
defaultValue 描述參數(shù)默認(rèn)值
required 是否為必傳參數(shù), false:非必傳; true:必傳
allowMultiple 指定參數(shù)是否可以通過多次出現(xiàn)來接收多個值
hidden 隱藏參數(shù)列表中的參數(shù)
example 非請求體(body)類型的單個參數(shù)示例
examples @Example(value = @ExampleProperty(mediaType = “”, value = “”)) 參數(shù)示例,僅適用于請求體類型的請求

案例演示

@ApiOperation(value="新增書本信息",notes="新增書本信息")
@PostMapping("/addBooks")
public JsonResponseBody<?> addBooks(
 ? ? ? ? ? ?@ApiParam(name="bookName",value="bookName",required = true) @RequestParam("bookName") String bookName,
 ? ? ? ? ? ?@ApiParam(name="price",value="price",required = true) @RequestParam("price") float price,
 ? ? ? ? ? ?@ApiParam(name="bookType",value="bookType",required = true) @RequestParam("bookType") String bookType){
 ? ? ?System.out.println("bookName="+bookName+",price="+price+",bookType="+bookType);
 ? ?return new JsonResponseBody<>();
}

三、生產(chǎn)環(huán)境下屏蔽Swagger

1、修改Swagger配置類

添加以下:

【Swagger】常用注解的使用、SpringBoot的整合及生產(chǎn)環(huán)境下屏蔽Swagger,spring boot,java,spring,tcp/ip,測試工具,開發(fā)語言

2、修改application.yml

修改application.yml文件,配置項目系統(tǒng)的運行環(huán)境(dev/test/prod)

????

spring:
  #配置swagger2生產(chǎn)和測試環(huán)境不可用
  profiles:
    active: prod

3、打包

使用maven package打包測試

【Swagger】常用注解的使用、SpringBoot的整合及生產(chǎn)環(huán)境下屏蔽Swagger,spring boot,java,spring,tcp/ip,測試工具,開發(fā)語言

4、運行測試

打開CMD,跳轉(zhuǎn)到target目錄,輸入命令:java -jar .\xxx.jar --spring.profiles.active=prod??梢灾苯哟蜷_jar包修改application.yml配置文件中spring.profiles.active屬性切換運行環(huán)境,具體請參考以下配置:

開發(fā)環(huán)境:dev; 生產(chǎn)環(huán)境:prod; 測試環(huán)境:test;

???????

【Swagger】常用注解的使用、SpringBoot的整合及生產(chǎn)環(huán)境下屏蔽Swagger,spring boot,java,spring,tcp/ip,測試工具,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-777453.html

到了這里,關(guān)于【Swagger】常用注解的使用、SpringBoot的整合及生產(chǎn)環(huán)境下屏蔽Swagger的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 多個springboot整合使用rabbitmq(使用注解的方式)

    先參考單個springboot使用rabbitmq和了解rabbitmq的五種模式 單個springboot整合rabbitmq_java-zh的博客-CSDN博客 1、先創(chuàng)建兩個springboot項目, 一個做生產(chǎn)者,一個做消費者 ?2、導(dǎo)包(生產(chǎn)者和消費者對應(yīng)的內(nèi)容都是一樣) 3、編寫配置文件 這里的配置文件生產(chǎn)者和消費者都一樣 這里以rab

    2024年02月11日
    瀏覽(21)
  • SpringBoot 整合Swagger2

    SpringBoot 整合Swagger2

    Swagger是一套開源工具和規(guī)范,用于設(shè)計、構(gòu)建和文檔化 RESTful Web 服務(wù)。它允許開發(fā)人員定義API的各個方面,并生成易于理解的API文檔和交互式API探索界面。同時,Swagger還提供代碼生成工具,可自動生成與API交互的客戶端和服務(wù)器端代碼,提高開發(fā)效率。 官網(wǎng):https://swagge

    2024年04月27日
    瀏覽(23)
  • SpringBoot整合Swagger2

    SpringBoot整合Swagger2

    在團隊開發(fā)中,一個好的 API 文檔不但可以減少大量的溝通成本,還可以幫助一位新人快速上手業(yè)務(wù)。傳統(tǒng)的做法是由開發(fā)人員創(chuàng)建一份 RESTful API 文檔來記錄所有的接口細(xì)節(jié),并在程序員之間代代相傳。這種做法存在以下幾個問題: 1)API 接口眾多,細(xì)節(jié)復(fù)雜,需要考慮不同

    2023年04月16日
    瀏覽(19)
  • 【Springboot系列】Springboot整合Swagger3不簡單

    ???Swagger是一個根據(jù)代碼注解生成接口文檔的工具,減少和前端之間的溝通,前端同學(xué)看著文檔就可以開發(fā)了,提升了效率,之前很少寫swagger,這次自己動手寫,還是有點麻煩,不怎么懂,記錄下,避免下次繼續(xù)踩坑 ? ? ? ? 新建一個springboo項目,一路next就好,這里使用的

    2024年02月05日
    瀏覽(30)
  • 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 文檔標(biāo)準(zhǔn),其是由 Swagger 來維護

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

    2024年02月11日
    瀏覽(24)
  • Springboot整合Swagger2后訪問swagger-ui.html 404報錯

    Springboot整合Swagger2后訪問swagger-ui.html 404報錯

    在spring boot項目中配置Swagger2,配置好了但是訪問確實404,SwaggerConfig中的注入方法也執(zhí)行了還是訪問不到頁面。究其原因是MVC沒有找到swagger-ui包中的swagger-ui.html文件和css樣式、js等文件。 解決?案: ?案1. 降低Swagger2的使用版本 ?案2. 使?配置?下+swagger-ui.html+指定的css?錄

    2024年02月11日
    瀏覽(27)
  • springboot 2.7版本整合swagger2代碼實現(xiàn)

    springboot 2.7版本整合swagger2代碼實現(xiàn)

    1.導(dǎo)入swagger2依賴 2.添加swagger配置類 3.啟動項目就這么easy? 4.easy個屁,報錯了,拋出了異常信息:? ?Failed to start bean \\\'documentationPluginsBootstrapper\\\'; nested exception is java.lang.NullPointerException:?Cannot invoke \\\"org.springframework.web.servlet.mvc.condition.PatternsRequestCondition.getPatterns() 5.發(fā)現(xiàn)這是sp

    2024年02月09日
    瀏覽(29)
  • SpringBoot3整合OpenAPI3(Swagger3)

    SpringBoot3整合OpenAPI3(Swagger3)

    swagger2 更新到3后,再使用方法上發(fā)生了很大的變化,名稱也變?yōu)?OpenAPI3 。 官方文檔 openapi3 使用十分方便,做到這里后,你可以直接通過以下網(wǎng)址訪問 swagger 頁面。 1. @OpenAPIDefinition + @Info 用于定義整個 API 的信息,通常放在主應(yīng)用類上??梢园?API 的標(biāo)題、描述、版本等信

    2024年01月22日
    瀏覽(21)
  • Springboot3.0整合swagger,廢棄Springfox改用Springdoc

    Springboot3.0整合swagger,廢棄Springfox改用Springdoc

    Automated JSON API documentation for API\\\'s built with Spring 官網(wǎng)地址:springfox.io springdoc-openapi java library helps to automate the generation of API documentation using spring boot projects. 官網(wǎng)地址:https://springdoc.org/v2/ 注意 :使用的是V2版本,這個版本支持springboot3.0 之前springboot3.0之前我用的都是Springfox來集

    2023年04月09日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包