最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Quarkus集成open api接口使用swagger ui展示

 更新時(shí)間:2022年02月23日 16:21:11   作者:kl  
這篇文章主要為大家介紹了Quarkus集成open?api接口使用swagger?ui的展示示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

前言

Quarkus中對(duì)swagger ui也有支持,但是和spring 中直接集成swagger ui功能不同,Quarkus中使用open api規(guī)范得到接口的json數(shù)據(jù),然后使用swagger ui展示。所以在Quarkus中集成swagger ui時(shí),會(huì)發(fā)現(xiàn)沒(méi)有swagger ui那些接口標(biāo)記注解了,取而代之的是open api規(guī)范中的注解。下面來(lái)捋一捋他們的關(guān)系,看看怎么在Quarkus中使用。

microprofile-open-api-doc:https://eclipse.org/microprofile-open-api-1.0

組件關(guān)系

 OpenAPI V3規(guī)范:

OpenAPI規(guī)范(OAS)定義了與RESTful API的語(yǔ)言無(wú)關(guān)的標(biāo)準(zhǔn)接口,使人類和計(jì)算機(jī)都可以發(fā)現(xiàn)和理解服務(wù)的功能,而無(wú)需訪問(wèn)源代碼,文檔或通過(guò)網(wǎng)絡(luò)流量檢查。正確定義后,使用者可以使用最少的實(shí)現(xiàn)邏輯來(lái)理解遠(yuǎn)程服務(wù)并與之交互。然后,文檔生成工具可以使用OpenAPI定義來(lái)顯示API,代碼生成工具可以使用各種編程語(yǔ)言來(lái)生成服務(wù)器和客戶端,測(cè)試工具以及許多其他用例也可以使用OpenAPI定義。

microprofile-open-api

此MicroProfile規(guī)范稱為OpenAPI 1.0,旨在提供一組Java接口和編程模型,使Java開(kāi)發(fā)人員可以從其JAX-RS應(yīng)用程序本地生成OpenAPI v3文檔。

smallrye-open-api

SmallRye OpenAPI是Eclipse MicroProfile OpenAPI的具體實(shí)現(xiàn)。

綜上可知,在Quarkus中,最終使用的是smallrye-open-api。它是OpenApi v3協(xié)議Java版本的具體實(shí)現(xiàn)

集成open api

引入依賴

<dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>

添加完以上依賴后,在開(kāi)發(fā)和測(cè)試環(huán)境會(huì)自動(dòng)激活組件,并注冊(cè)/openapi接口,通過(guò)這個(gè)接口可以獲取Openapiv3文檔,請(qǐng)求http://localhost:8080/openapi即可。同時(shí)也會(huì)注冊(cè)/swagger-ui接口,訪問(wèn)http://localhost:8080/swagger-ui就可以看到如下的界面:

默認(rèn)情況下,swagger ui只會(huì)在開(kāi)發(fā)測(cè)試環(huán)境激活,如果你想在生產(chǎn)環(huán)境也使用swagger-ui,需要在application.properties中添加quarkus.swagger-ui.always-include=true來(lái)激活,這個(gè)配置是編譯時(shí)生效的,編譯完成后無(wú)法更改。前面已經(jīng)說(shuō)過(guò),Quarkus集成了open api導(dǎo)出接口數(shù)據(jù)使用swagger ui展示的,所有集成起來(lái)非常簡(jiǎn)單,下面看下如何使用open api的java規(guī)范注解詳細(xì)的描述接口信息

應(yīng)用基礎(chǔ)信息定義

/**
 * @author kl : http://kailing.pub
 * @version 1.0
 * @date 2020/7/14 11:29
 */
@OpenAPIDefinition(
        info = @Info(
                title = "用戶信息系統(tǒng)接口",
                version = "1.0.1",
                description = "這個(gè)信息是用來(lái)描述swagger ui接口的,你可以根據(jù)這個(gè)信息來(lái)了解這個(gè)系統(tǒng)的api情況",
                contact = @Contact(
                        name = "kl博主",
                        url = "http://www.kailing.pub",
                        email = "632104866@qq.com")
        )
)
public class SwaggerConfig extends Application {
}

openapi中使用@OpenAPIDefinition描述應(yīng)用基礎(chǔ)信息,可以類比swagger中的@SwaggerDefinition注解

效果如下:

接口信息定義

/**
 * @author kl : http://kailing.pub
 * @version 1.0
 * @date 2020/7/14 11:05
 */
@Path("/user")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@Tag(name = "UserResource",description = "用戶接口列表")
public class UserResource {
    @POST
    @Path("/add")
    @Operation(summary = "創(chuàng)建用戶", description = "這是一個(gè)創(chuàng)建用戶的接口")
    public String createUser(UserDto userDto) {
        return "hello";
    }
    @POST
    @Path("/update")
    @Operation(summary = "更新用戶", description = "這是更新用戶的接口")
    public UserDto update(@RequestBody(description = "更新用戶實(shí)體", required = true,
            content = @Content(schema = @Schema(implementation = UserDto.class))) UserDto userDto) {
        return userDto;
    }
    @GET
    @Path("/{userId}")
    @Operation(summary = "查找用戶", description = "這是查找用戶的接口")
    @APIResponse(responseCode = "400", description = "找不到這個(gè)用戶")
    public UserDto findUser(@Parameter(description = "用戶的ID", required = true) @PathParam("userId") Integer userId){
        return new UserDto();
    }
    /**
     * 使用 @Operation(hidden = true) 隱藏這個(gè)api,不在swagger ui中展示
     */
    @GET
    @Path("/hello")
    @Operation(hidden = true)
    public String hello(){
        return "hello";
    }
}

效果如下:

傳輸實(shí)體定義

/**
 * @author kl : http://kailing.pub
 * @version 1.0
 * @date 2020/7/14 11:12
 */
@Schema( description = "這是一個(gè)用戶的傳輸實(shí)體")
public class UserDto {
    //隱藏內(nèi)部使用的屬性
    @Schema(hidden = true)
    private Integer id;
    @Schema(title = "姓名", required = true, example = "kl")
    private String name;
    @Schema(title = "年齡", required = true, maximum = "120",minimum = "1",example = "19", type = SchemaType.INTEGER)
    private Integer age;
}

效果如下:

結(jié)語(yǔ)

在Quarkus中使用swagger ui,OpenApi v3變成了主角。swagger ui單純的變成了展示OpenApi v3數(shù)據(jù)的ui。所以使用方式上也區(qū)別了在spring環(huán)境中使用的方式,那些熟悉的swagger ui本身定義的注解都沒(méi)有了,需要重新學(xué)習(xí)microprofile-open-api中定義的注解了,好在注解變化不大,學(xué)習(xí)起來(lái)沒(méi)啥難度

以上就是Quarkus集成open api接口使用swagger ui展示的詳細(xì)內(nèi)容,更多關(guān)于Quarkus集成open api展示swagger ui的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++排序算法之桶排序原理及實(shí)現(xiàn)詳解

    C++排序算法之桶排序原理及實(shí)現(xiàn)詳解

    這篇文章主要介紹了C++排序算法之桶排序原理及實(shí)現(xiàn)詳解, C++ 桶排序是一種線性時(shí)間復(fù)雜度的排序算法,它通過(guò)將待排序元素分配到不同的桶中,然后對(duì)每個(gè)桶中的元素進(jìn)行排序,最后將所有桶中的元素按順序合并得到有序序列,需要的朋友可以參考下
    2023-10-10
  • SpringBoot中注解@ConfigurationProperties與@Value的區(qū)別與使用詳解

    SpringBoot中注解@ConfigurationProperties與@Value的區(qū)別與使用詳解

    本文主要介紹了SpringBoot中注解@ConfigurationProperties與@Value的區(qū)別與使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • XML Web 服務(wù) Eclipse實(shí)現(xiàn)sun-jaxws.xml文件的方法

    XML Web 服務(wù) Eclipse實(shí)現(xiàn)sun-jaxws.xml文件的方法

    在sun-jaxws.xml文件,可以配置endpoint、handler-chain等內(nèi)容,在這個(gè)文件中配置的內(nèi)容會(huì)覆蓋在Java代碼中使用注解屬性配置的的內(nèi)容,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2023-11-11
  • 關(guān)于mybatis-plus插件使用時(shí)的一些問(wèn)題小結(jié)

    關(guān)于mybatis-plus插件使用時(shí)的一些問(wèn)題小結(jié)

    這篇文章主要給大家介紹了關(guān)于mybatis-plus插件使用時(shí)的一些問(wèn)題的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • java通過(guò)方向鍵控制小球移動(dòng)的小游戲

    java通過(guò)方向鍵控制小球移動(dòng)的小游戲

    這篇文章主要為大家詳細(xì)介紹了java通過(guò)方向鍵控制小球移動(dòng)的小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Java使用Hutool+自定義注解實(shí)現(xiàn)數(shù)據(jù)脫敏

    Java使用Hutool+自定義注解實(shí)現(xiàn)數(shù)據(jù)脫敏

    我們?cè)谑褂檬謾C(jī)銀行的時(shí)候經(jīng)常能看到APP上會(huì)將銀行卡的卡號(hào)中間部分給隱藏掉使用 ***** 來(lái)代替,在某些網(wǎng)站上查看一些業(yè)務(wù)密碼時(shí)(例如簽到密碼等)也會(huì)使用 ***** 來(lái)隱藏掉真正的密碼,那么這種方式是如何實(shí)現(xiàn)的呢,本文將給大家介紹使用Hutool+自定義注解實(shí)現(xiàn)數(shù)據(jù)脫敏
    2023-09-09
  • Java 分析并解決內(nèi)存泄漏的實(shí)例

    Java 分析并解決內(nèi)存泄漏的實(shí)例

    這篇文章主要介紹了Java 分析并解決內(nèi)存泄漏的實(shí)例,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-08-08
  • Java中實(shí)現(xiàn)簡(jiǎn)單的Excel導(dǎo)出

    Java中實(shí)現(xiàn)簡(jiǎn)單的Excel導(dǎo)出

    今天小編就為大家分享一篇關(guān)于Java中實(shí)現(xiàn)簡(jiǎn)單的Excel導(dǎo)出,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Java中 URL實(shí)現(xiàn)斷點(diǎn)下載

    Java中 URL實(shí)現(xiàn)斷點(diǎn)下載

    Java中 URL實(shí)現(xiàn)斷點(diǎn)下載,需要的朋友可以參考一下
    2013-03-03
  • Java如何使用HTTPclient訪問(wèn)url獲得數(shù)據(jù)

    Java如何使用HTTPclient訪問(wèn)url獲得數(shù)據(jù)

    這篇文章主要介紹了Java使用HTTPclient訪問(wèn)url獲得數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09

最新評(píng)論

社旗县| 青浦区| 定兴县| 磐石市| 昭通市| 藁城市| 昌邑市| 沁源县| 金堂县| 噶尔县| 大荔县| 云安县| 登封市| 新密市| 绥中县| 威海市| 陆丰市| 霞浦县| 河间市| 如皋市| 池州市| 文登市| 清水河县| 孝感市| 西盟| 齐齐哈尔市| 望江县| 淮安市| 武山县| 平利县| 邻水| 徐闻县| 华安县| 石嘴山市| 股票| 乌什县| 府谷县| 长汀县| 色达县| 沈丘县| 顺平县|