衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何搭建 Swagger API文檔平臺

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-10-09 15:37 ? 次閱讀

相信大家平時開發的過程中,都會使用到 API文檔工具吧?大家都在使用什么呀?Java docsI/O Docs, apiary.io, Docco, Dexy, Doxygen, TurnAPISwagger。今天我就來教大家如何使用 Swagger 搭建 API 文檔,并且配置權限使用。畢竟開發文檔還是內容使用的為好,萬一上線到生產環境,沒有關swagger 又沒有設置權限,那可不GG啦。

好,我們這就上手搞起來。

我們將使用 SpringfoxSwagger 2 規范的實現,并通過 JWT 的方式來設置權限。

配置SwaggerUI

第一步:向Spring Boot項目添加Maven依賴項

打開 pom.xml 文件,添加 springfox-boot-startermaven 依賴中。

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

添加 springfox-boot-starter 依賴后,spring boot 能啟動配置功能,配置好 swagger,所以我們不需要手動添加注解來啟用 Swagger

我們啟動一下項目訪問 Swagger 文檔的 JSON API , 來看看 Springfox 是否正常運行。我們可以在瀏覽器中輸入以下URL:

http://localhost:8080/v3/api-docs

圖片

能夠看到以上的類似結果,說明我們第一步已經成功了。

第二步:將 Swagger 2 集成到 Spring Boot 項目中去

我們創建一個 SwaggerConfig 類,并用 @Configuration 注解來注釋。Swagger 的配置主要圍繞著 Docket 對象來完成。我們可以在 SwaggerConfig 類中添加以下代碼。

@Configuration
public class SwaggerConfiguration {
    private ApiInfo apiInfo() {
        return new ApiInfo("Blog REST APIs",
                "REST APIs for Blog Application",
                "1.0",
                "Terms of service",
                new Contact("xxx", "xxx", "xxx"),
                "License of API",
                "API license URL",
                Collections.emptyList());
    }
    @Bean
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }
}

在構造 Docket 對象之后,它的 select() 方法返回了 ApiSelectorBuilder 的一個實例,它提供了一種控制 Swagger 所暴露的端點的方法。

我們可以通過使用 RequestHandlerSelectorsPathSelectors 配置選擇 RequestHandlers 的路徑。如果兩者兩者使用 any() , 那就說明配置所有的 API 都能在 Swagger 上顯示了。

第三步:訪問 Swagger UI

Swagger UI 是一個內置的解決方案,使用戶與 Swagger 生成的API文檔的交互變得更加容易。我們在瀏覽器中輸入下面URL即可查看:

http://localhost:8080/swagger-ui/

圖片

結果應該是這樣的。

好,到這里 Swagger 的使用配置就算結束了。那接下來我們來看看怎么用JWT增加權限配置呢?

配置 JWT

JWT 是什么?相信大家都一定聽過吧,它就是 JSON Web Token 的縮寫。話不多說,直接上手代碼配置起來。在 SwaggerConfig 里面新增代碼。

我們先來配置 ApiKey 作為 JWT認證 header 信息

public static final String AUTHORIZATION_HEADER = "Authorization";
    private ApiKey apiKey(){
        return new ApiKey("JWT", AUTHORIZATION_HEADER, "header");
    }

下一步,我們配置 JWTSecurityContext , 對 SecurityContext 配置全局的 AuthorizationScope :

private SecurityContext securityContext(){
        return SecurityContext.builder().securityReferences(defaultAuth()).build();
    }
    private List< SecurityReference > defaultAuth(){
        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
        authorizationScopes[0] = authorizationScope;
        return Arrays.asList(new SecurityReference("JWT", authorizationScopes));
    }

然后我們配置 Docket 對象,對 Docket 對象設置 SecurityContextSecuritySchemes

@Bean
    public Docket api(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .securityContexts(Arrays.asList(securityContext()))
                .securitySchemes(Arrays.asList(apiKey()))
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(PathSelectors.any())
                .build();
    }

到這里,JWT 就配置完成了,感覺是不是挺簡單的?好,我們再來運行一下,看看效果

圖片

我們點擊右上角的 Authorize 按鈕,彈出一個輸入 apiKey 的彈出層。

圖片

輸入 api key 之后,點擊 Authorize 認證通過,我們就又能調用 API 接口調試了。

用注解定制 Swagger API 文檔

為了能夠定制 Swagger 文檔,swagger-core 提供了一套注解來聲明和操作輸出。

Swagger-core 注解:

NameDescription
@Api標記為 Swagger 資源
@ApiModel標記為 Swagger 模型
@ApiModelProperty模型字段的屬性說明
@ApiOperationhttp接口的說明
@ApiParamhttp 接口參數說明

更多詳細的說明可以參考 GitHub 上的解釋:https://github.com/swagger-api/swagger-core/wiki/annotations

現在我們就舉個例子來解釋怎么使用這些個注解, 首先來看 @Api@ApiOperation 怎么使用:

@Api(value = "CRUD Rest APIs for Post resources")
@RestController
@RequestMapping()
public class PostController {
    @ApiOperation(value = "Get All Posts REST API")
    @GetMapping("/api/v1/posts")
    public PostResponse getAllPosts(
            @RequestParam(value = "pageNo", defaultValue = "0", required = false) int pageNo,
            @RequestParam(value = "pageSize", defaultValue = "100", required = false) int pageSize
    ){
        ...
    }
 
}

再來看看 @ApiModel@ApiModelProperty 怎么使用:

@ApiModel(description = "Post model information")
@Data
public class PostDto {
    @ApiModelProperty(value = "Blog post id")
    private long id;
}

是不是感覺 so easy?

總結

通過這篇文章我們學習了如何通過 Springfox 來搭建 Swagger API 文檔平臺,然后也學會了如何設置 JWT 的方式做認證,保證 API 不會被別人能夠惡意使用。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1511

    瀏覽量

    62397
  • 瀏覽器
    +關注

    關注

    1

    文章

    1036

    瀏覽量

    35535
  • URL
    URL
    +關注

    關注

    0

    文章

    139

    瀏覽量

    15479
  • 代碼
    +關注

    關注

    30

    文章

    4827

    瀏覽量

    69054
收藏 人收藏

    評論

    相關推薦

    swagger和smart-doc的區別

    首先,Swagger 這個工具能夠自動生成 API 接口文檔,在線調試,節省了很多書寫文檔的時間,非常強大。 但是,想要文檔生成的合格,還是
    的頭像 發表于 09-30 10:01 ?540次閱讀
    <b class='flag-5'>swagger</b>和smart-doc的區別

    鴻蒙開發接口公共事件與通知:【FFI能力】 N-API在Android、iOS平臺應用的使用指導

    N-API接口可以實現ArkTS/TS/JS與C/C++(Native)之間的交互,ArkUI-X中支持的N-API接口情況和使用場景請見[FFI能力(N-API)]。本文檔以[Ark
    的頭像 發表于 05-25 16:33 ?2012次閱讀
    鴻蒙開發接口公共事件與通知:【FFI能力】 N-<b class='flag-5'>API</b>在Android、iOS<b class='flag-5'>平臺</b>應用的使用指導

    關于IAR搭建開發平臺

    請教大神:小弟剛入行STM32,想問如何用IAR搭建STM32的開發平臺,網上找了些文檔看,還是不太清楚,望大神不吝賜教
    發表于 07-03 09:04

    紫外刻寫光纖光柵平臺搭建提供

    紫外刻寫光纖光柵平臺搭建提供從平臺設計、核心光路系統設計,平臺搭建、模塊調諧到用戶培訓完整的刻寫平臺
    發表于 12-29 20:39

    Tasking平臺搭建流程

    在QQ群里看到有人問Tasking平臺搭建的問題,正好以前做過的這類文檔,發上來共享一下,希望能有點幫助Tasking-平臺搭建.pdf (
    發表于 12-14 10:39

    在哪里查看HarmonyOS的API文檔

    如何查看HarmonyOS的API文檔
    發表于 04-02 15:13

    缺少VGlite字體渲染api文檔,求分享

    我試圖使用 vglite api 在 MIMXRT1166/1176 上使用 verisilicon gpu 渲染圖形,并且特別缺乏關于此的文檔。 我能夠很好地初始化 GPU 并渲染矢量和光柵對象
    發表于 04-24 06:42

    如何搭建API程序_框架api接口規范

    基于互聯網的應用正變得越來越普及,在這個過程中,有更多的站點將自身的資源開放給開發者來調用。對外提供的API 調用使得站點之間的內容關聯性更強,同時這些開放的平臺也為用戶、開發者和中小網站帶來了更大的價值。搭建
    發表于 01-04 17:48 ?1.2w次閱讀
    如何<b class='flag-5'>搭建</b><b class='flag-5'>API</b>程序_框架<b class='flag-5'>api</b>接口規范

    windows+apach+oracle+php環境搭建文檔

    windows+apach+oracle+php環境搭建文檔(2020空間電源技術學術研討會)-該文檔為windows+apach+oracle+php環境搭建文檔總結文檔,是一份不錯
    發表于 09-22 14:54 ?10次下載
    windows+apach+oracle+php環境<b class='flag-5'>搭建文檔</b>

    如何通過ApiFox來構建API場景測試

    在開發前后臺分離項目并且通過不同團隊來實現的時候,如何將后臺設計的 API 準確的傳達到前臺,是一個非常重要的工作。為了簡化這個過程,開源社區做了很多努力,比如 protobuf技術,swagger
    的頭像 發表于 09-01 10:48 ?1691次閱讀

    深度“盤”一下Eolink這款免費API協作平臺

    使用 Flasgger 得到一個 Swagger UI 具體步驟,不做重點描述,咱們的目標是打通 Swagger 和 Eolink,讓 API 研發資產可以盤活,Swagger 簡易部
    的頭像 發表于 12-15 14:59 ?1119次閱讀

    API+DevOps:華為云API Arts一體化平臺,端到端呵護您的API

    華為云API Arts是API全生命周期一體化協作平臺,支持開發者一站式高效實現API設計、API開發、
    的頭像 發表于 03-01 15:45 ?841次閱讀
    <b class='flag-5'>API</b>+DevOps:華為云<b class='flag-5'>API</b> Arts一體化<b class='flag-5'>平臺</b>,端到端呵護您的<b class='flag-5'>API</b>

    ChatGPT API文檔

    補充下這個API文檔,幫助理解。感覺prompt(提示)、Embeddings(嵌入)、Fine-tunes(微調)有 點牛逼。
    發表于 06-06 17:38 ?0次下載

    swagger和smart-doc的區別

    首先,Swagger 這個工具能夠自動生成 API 接口文檔,在線調試,節省了很多書寫文檔的時間,非常強大。 但是,想要文檔生成的合格,還是
    的頭像 發表于 09-30 16:08 ?1313次閱讀
    <b class='flag-5'>swagger</b>和smart-doc的區別

    紅綠燈倒計時API開發文檔

    百度紅綠燈倒計時API開發文檔
    發表于 06-30 11:53 ?3次下載
    网络百家乐最安全| 百家乐官网2号技术打法| 波音百家乐自动投注| KK百家乐官网现金网| 金樽百家乐的玩法技巧和规则| 百家乐官网稳赢秘笈| 大发888认识的见解| 网上玩百家乐好吗| 永利高百家乐官网开户| 中国百家乐的玩法技巧和规则 | 88娱乐城2官方网站| 赌百家乐的心得体会| 玩百家乐官网技巧看路| 大发888 游戏下载| 百家乐手机游戏下载| 至尊百家乐官网年代| 大发888官方下载网址| 百家乐在线手机玩| 百家乐官网平注法口诀| 大发888真钱游戏官方网站 | 百家乐官网园胎教网| 大发888真人娱乐场| 百家乐牌机的破解法| 破解百家乐官网公式| 888真人| 东莞百家乐的玩法技巧和规则| 奇迹百家乐官网的玩法技巧和规则 | 大发888官方 df888gfxzylc8| 赌百家乐心里技巧| 百家乐官网网站平台| 米泉市| 威尼斯人娱乐网反| 百家乐赌经| 百家乐官网一般的庄闲比例是多少 | 粤港澳百家乐官网娱乐网| 三台县| 百樂坊百家乐官网的玩法技巧和规则| 百家乐官网试玩网站| 亿酷棋牌世界下载| 百家乐五铺的缆是什么意思| 澳门百家乐国际娱乐城|