swagger实现多项目api管理

来源:互联网 发布:qq变声软件下载 编辑:程序博客网 时间:2024/05/17 20:01

公司最近在做微服务拆分,将一个项目拆分成多个小的服务,拆分之后,项目多了,不同的项目的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

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电力检测报告怎么办 电磁炉受热不均怎么办 电磁炉显示e7怎么办 电子表进水了怎么办 电表烧了怎么办 农村新宅无电表怎么办? 电表显示c001怎么办 电表总是超载怎么办 电卡读卡失败怎么办 水表插卡后没水怎么办 服用利君沙过敏怎么办 西安购电卡丢了怎么办 选课没选上怎么办 网上选课没选上怎么办 矿山关停职工怎么办? 新办石场开采证怎么办 广东驾考新规老学员怎么办 公司股东变更怎么办 我家房门打不开怎么办 家里防盗门打不开怎么办 劳务公司拖欠工资怎么办 磨床不吸磁怎么办 合同对方违约怎么办 土地承包合同丢失怎么办 合同章丢失怎么办 供销社职工以后怎么办 被汽贸骗了怎么办 特斯联找不到小区怎么办 居住房怎么办营业执照 退休名字不符怎么办 苹果id停用怎么办 企业欠薪怎么办 高一被开除了怎么办 韶关市怎么办居住证 网贷欠太多了怎么办 欠网贷欠太多怎么办 车辆过户路桥费怎么办 船舶公司标准化怎么办 海员服务薄丟失怎么办 hdl-c偏低怎么办 hdl_c偏低怎么办