1. 程式人生 > >swagger實現多專案api管理

swagger實現多專案api管理

公司最近在做微服務拆分,將一個專案拆分成多個小的服務,拆分之後,專案多了,不同的專案的api也隨之增多,各個獨立,很難管理。同時前端同學開發的時候,要不停的找專案api地址,很不方便。我們專案api的介面管理用的是swagger,於是有了一個想法,swagger可不可以支援多專案呢。看了一下頁面結構,他有一個api-docs地址的輸入框,可以輸入地址,再點瀏覽,就可以檢視對應地址的api。那麼其實我只要在輸入框前面加一個下拉框,裡面有對應的服務的名稱及地址,當我選擇不同的服務時,輸入框內會被填充成對應的服務的api地址,即可實現我們的目標。

首先我們要下載swagger-ui的原始碼,這裡下載的是2.2.10的版本,因為我們專案使用的是srpingfox2.6.1,還有一個重要的原因是swagger3.x是用react實現的,我不會(感嘆年逝去,已經落後了),下載地址是https://github.com/swagger-api/swagger-ui/tree/v2.2.10,專案是用nodejs來編譯的,所以要先配好nodejs的環境。

程式碼下載後,開始改造程式碼,其實改動很簡單,我們首先要有一個地方存服務名及地址的一些資訊,因為服務的名稱還有地址不會改動太大,所以想到直接放在json裡,於是要在html目錄下新建一個urlData.json的檔案用於儲存相關資料。

urlData.json

[{"id":"test1","name":"測試1","url":"http://api.beta.test.com/api/test1/v2/api-docs"},
  {"id":"test2", "name":"測試2","url":"http://api.beta.test.com/api/test2/v2/api-docs"}]

然後修改首頁,使其在頁面載入完成後,載入json資料,填充下拉框。開啟index.html在script標籤中新增如下兩個方法
$(document).ready(function(){
        $.ajax({
                   type: "get",
                   url: "urlData.json",
                   success: function (resp) {
                       urls = resp;
                       $.each(resp, function (index, item) {
                           $("#apiSelect").append("<option value='" + item.id + "'>" + item.name + "</option>");
                       });
                   }
               });
    });
    function urlChange() {
        var selectVal = $("#apiSelect").val();
        $.each(urls,function (index,item) {
            if(selectVal==urls[index].id){
                $("#input_baseUrl").val(urls[index].url);
            }
        })
    }
body中的內容修改如下
<div id='header'>
  <div class="swagger-ui-wrap">
    <a id="logo" href="http://swagger.io"><img class="logo__img" alt="swagger" height="30" width="30" src="images/logo_small.png" /><span class="logo__title">swagger</span></a>
    <select id="apiSelect" onchange="urlChange()">
      <option>請選擇api地址</option>
    </select>
    <form id='api_selector'>
      <div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div>
      <div id='auth_container'></div>
      <div class='input'><a id="explore" class="header__btn" href="#" data-sw-translate>Explore</a></div>
    </form>
  </div>
</div>

<div id="message-bar" class="swagger-ui-wrap" data-sw-translate> </div>
<div id="swagger-ui-container" class="swagger-ui-wrap"></div>
至此,swagger的改造基本完成。如果運維給力,可以把你們的每個服務都分配一個二級域名,那到些,你就可以直接在些頁面管理多個專案的api了。

我們的專案是通過二級路徑來區分不同的專案的,即http://api.beta.test.com/api/test1/v2,此結構還需要對專案api-docs的地址進行一下處理,經過google,發現springfox預留了一個地址變數,加上即可替換預設的/v2/api-docs的地址。如果用不同的域名來解析,就要解決跨域問題。

在application.yml裡配置如下變數,springfox.documentation.swagger.v2.path  然後需要在SwaggerConfigure.java裡面注入這個變數,雖然只注入不使用,個人理解可能是因為spring的懶載入造成的,用的時候才載入,不用不載入。

最終效果



專案下載地址:http://download.csdn.net/download/liufei198613/10173448

相關推薦

swagger實現專案api管理

公司最近在做微服務拆分,將一個專案拆分成多個小的服務,拆分之後,專案多了,不同的專案的api也隨之增多,各個獨立,很難管理。同時前端同學開發的時候,要不停的找專案api地址,很不方便。我們專案api的介面管理用的是swagger,於是有了一個想法,swagger可不可以支援

Kubernetes使用集群聯邦實現集群管理

rbac wide 國內 127.0.0.1 修改 網卡名稱 分布 start 3.2 Kubernetes在1.3版本之後,增加了“集群聯邦”Federation的功能。這個功能使企業能夠快速有效的、低成本的跨區跨域、甚至在不同的雲平

Gradle 入門-實現專案構建

本文作者:黃少存,叩丁狼高階講師。原創文章,轉載請註明出處。 之前咱們已經學習了Gradle 的基本原理知識點,已經瞭解了 Gradle 構建配置的組成部分以及構建的生命週期,如何進行依賴管理以及如何解決傳遞性依賴衝突.那這一篇咱們來做個實踐,來看下咱們在企業中經常使用到的操作,就

API管理-基於SpringBoot專案整合swagger實現介面文件自動生成

1. 為什麼要使用swagger? 上一次部落格(API管理-使用開源xxl-api專案管理介面)中我也提到過介面文件在整個生命

系統API函數實現線程及線程同步

容易 erro include man pre art Owner 參數 全局 1、線程的創建   須包含頭文件:#include <windows.h>   HANDLE CreateThread(     LPSECURITY_ATTRIBUTES lp

Monit實現Docker容器內進程管理(二)

doc Superviso ali 解決 重點 back 執行 break 管理後臺 Monit和Supervisor還是有很大區別的,Supervisor管理的都是前臺執行的進程,Monit既可以管理前臺進程也可以管理後臺進程,簡單的說,在CentOS中使用service

springboot swagger api管理

.com cat 創建 暴露 mave cati boot 方法 img 一 引入maven包 二 創建SwaggerConfig類 三 暴露資源 四 攔截器過濾 五 ServiceApplication添加註解 六 類和方法註解 七 啟動項目訪問http:

用Jenkins集成ios項目設置scheme,同一代碼自動輸出個環境包 實現便捷切換API環境

ios項目 bug 編譯打包 不同配置 online space 測試 jenkin spa Jenkins 安裝使用參考我的博客http://www.cnblogs.com/zhujin/p/9064820.html Xcode 配置:說明 一個schema 對應一套環境

NodeJS簡易部落格系統(九)後臺管理實現專案總結

功能描述及流程在上一篇已經說明,現在來寫具體實現過程。 一、頁面實現 (1)模板 首頁模板main_template.html <!DOCTYPE html> <html lang="en"> <head> <

swagger實現api介面視覺化

1.pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.framework.version>4

SpringBoot 使用 swagger 實現Rest Api 文件化

swagger 允許使用者在一個html5 web 頁面中,對API 進行文件化和互動 優點: 功能豐富 :支援多種註解,自動生成介面文件介面,支援在介面測試API介面功能; 及時更新 :開發過程中花一點寫註釋的時間,就可以及時的更新API文件,省心省力; 整合簡單 :通過新增pom依賴

SpringBoot系列: Maven專案管理

這篇是 maven 專案管理的第二篇, 講解使用 maven 進行多個專案管理, 之前有一篇是 maven 的基礎知識.  SpringBoot系列: Eclipse+Maven環境準備 一個完整的解決方案通常都會包含多個專案, 這些專案往往會有一些公用的依賴, 比如都依賴 SpringBoo

Unity實現通用的專案音訊管理

一、音訊管理器指令碼如下: using UnityEngine; using System.Collections; using System.Collections.Generic; public class Audio

Pycharm中實現專案共存的方式

一、背景 在Python學習中,使用pycharm只能開啟一個專案,如果想在一個pycharm中同時開啟多個專案,該怎麼辦呢?由於學習中遇到需要開啟多個專案,所以就百度查詢了一下方法。 二、解決辦法 1、開啟pycharm,選擇file>settings,如下圖: 2、開啟setting設定對話方塊,

Jersey2+swagger組建restful風格api及文件管理

1.jar包引入 <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-server<

Kubernetes使用叢集聯邦實現叢集管理_Kubernetes中文社群

作者介紹:有容雲系統工程師 呂龍。 Kubernetes在1.3版本之後,增加了“叢集聯邦”Federation的功能。這個功能使企業能夠快速有效的、低成本的跨區跨域、甚至在不同的雲平臺上執行叢集。這個功能可以按照地理位置建立一個複製機制,將多個kubernetes叢集進行復制,即使遇到某個區

我在用mycat實現web專案租戶(一)

還沒畢業的小菜雞,在實習,領導讓做多租戶,於是聽說了mycat。 首先先去百度了Mycat。(指路官網:http://www.mycat.io/) 很開心的發現有官方文件(Mycat權威指南),還是我能看得懂的中文,真開心。 我有pdf的,想要的私信我。 快300頁的文件,我只看了前

專案管理中PMO的作用

      隨著現代企業規模的不斷擴大,多專案同時執行成為了現代企業的常態,以及企業專案化程序的不斷深入,大部分企業不再僅僅只執行一個專案,而且數量之大已經超出了人們的想象,如惠普公司每年有3000個左右的專案,摩托羅拉每年也有約逾2500專案……面對每天不斷髮生和進行的專案,如

Java Maven專案:spring boot + Mybatis連線MySQL,通用mapper的增刪改查,對映實現表查詢

1. MySQL自帶庫test新增表user、role 角色表role 使用者表user 2. 新增依賴,配置屬性 相關依賴:百度即可,此處略 application.properties spring.application.name=clean-exe

SpringBoot+restFul+filter+threadLocal實現租戶的專案

本片部落格參考了 https://blog.csdn.net/gebitan505/article/details/51614805 threadLocal的目的是:  實現變數的全域性話,在當前的專案當中是實現了使用者名稱的多租戶狀態下的全域性話 fiter:進行toke