Kong管理UI -kong-dashboard (附kong封装webservice方法)

  本文仍然是在centos 6.7的环境下进行

                                                                                                             本文转载请注明出处 —— xiaoEight

    btw如果要正常使用管理UI,前提为kong已经正常run(可参考)起来,此UI可看作为一层薄薄的皮,包装好了我们需要的请求与返回的显示问题(懒人必备?).

      附kong封装webservice方法,小Eight处理的小方法

  在Kong的git上可以看到丰富的三方工具,本文选用的管理UI也是上面的一个admin ui 项目

Here is a list of third-party tools maintained by the community:

  

  • 安装

  准备工作(整个准备工作以用源码安装为例 form source):

  1.使用的管理UI kong-dashboard 基于nodejs 所以需要安装nodejs(友情提示,使用node 5.11.1版本比较好,其他版本例如6.几没有跑起来,或者有朋友运行起来了可以告知一下)

  2.由于会使用到github资源和可能偶尔在墙外的资源,所以建议使用淘宝npm;

  3.同时会使用到bower;

  4.npm install 过程需要c++ 11(由于小Eight用的环境gcc版本低于4.8无法支持c++11 需要升级gcc版本到4.8或4.8以上;关于如何升级的园子里面文章不少如果大家需要我后续可以poll一篇我的升级过程)

  5.git clone下来的文件夹权限

  6.如果使用root用户进行install 需要修改(如下图)

    

  

  

  搞定准备工作之后,就可以根据git步骤上进行安装了(以通过源码安装为例,具体命令有些许不同):

# Pull repository
git clone https://github.com/PGBI/kong-dashboard.gitsudo chmod -R 777 kong-dashboard   (!!!!该步非必须,根据实际使用进行文件夹读写权限调整)cd kong-dashboard

# Build Kong Dashboard
sudo npm install --unsafe-perm --registry=https://registry.npm.taobao.org

# Start Kong Dashboard
npm start

# To start Kong Dashboard on a custom port
npm start -- -p [port]

  启动成功后访问:http://你的机器或绑定的域名:8080

  

  • 使用Admin UI

  具体使用和UI上显示内容的含义可参考kong的doc,下面只简单提及一些需要注意的地方,补赘述具体使用

  1.配置注意地址(kong的管理地址,默认为http://kong server机器或绑定的域名:8001)后面不要多加"/"如下图  否则点击API会出现not found api之类的提示,当然也要确保kong server正常运行中

    

  

  2.新增API与使用新增的API时,需要注意如果需要使用地址方式指向api即 需要勾选strip-request path 如果使用head中带请求地址的方式,需要在head中带 X-Host-Override post.demo (即request host)

  

  使用时需要注意,请求的地址为http://kong server机器或绑定的域名:8000 (下图为在url中带请求的api的方式)

  

  3.插件使用实例,使用key-

    i.需要在api基础上新建插件auth key

    

    ii.设置插件 keyname(需要注意此keyname会在后面url中使用)

      

      当启用插件后

        如果后面keyname在地址栏或header中不正确会有如下提示

          

        如果后面key在地址栏或header中不正确会有如下提示

          

    

    iii.新建customer并设置其key的内容也可以认为为keyname对应的值上面(该处暂时使用的对应上述auth key),用于实际访问使用

      

    

    iiii.使用(请求的地址为http://kong server机器或绑定的域名:8000)

    

    或者header方式如下图

    

后注:

  1.其他插件的使用方式大同小异(例如日志等插件大家可以自行检查尝试)

  2.对于使用kong来处理webservice的情况,由于我们想达到的效果是可以每次都管控到调用而非仅仅在引用的时候,所以需要对引用后自动生成的配置文件中的endpoint进行修改,实质为wdsl内容进行处理.将地址替换为kong包装过的地址即可.

    以c#为例小Eight的处理方式,在引用端调用生成类使用时,只需要指明调用的是那个端口即使用多个endpoint对应的name

      1.引入HttpsReflector

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Web.Services.Description;

namespace WebService4Test
{
    public class HttpsReflector : SoapExtensionReflector
    {

        public override void ReflectMethod()
        {
            //no-op
        }

        public override void ReflectDescription()
        {
            ServiceDescription description = ReflectionContext.ServiceDescription;

            foreach (Service service in description.Services)
            {
                foreach (Port port in service.Ports)
                {
                    foreach (ServiceDescriptionFormatExtension extension in port.Extensions)
                    {
                        SoapAddressBinding binding = extension as SoapAddressBinding;

                        if (null != binding)
                        {
                            binding.Location = binding.Location.Replace("localhost:9933/Service1.asmx", "kong server机器或绑定的域名:8000/wbstest?apikey=testbaidukey"); ;//http://localhost:9933/Service1.asmx
                        }
                    }
                }
            }
        }

    }

}

      2.修改Web.Config 新增HttpsReflector system.web中加入如下code

<webServices>
      <soapExtensionReflectorTypes>
        <add type="WebService4Test.HttpsReflector, WebService4Test"/>
      </soapExtensionReflectorTypes>
</webServices>
时间: 2024-10-06 17:04:37

Kong管理UI -kong-dashboard (附kong封装webservice方法)的相关文章

liger ui组件的抽取与封装

为了让ligerui能更好的工作,我们需要对ligerui的一些常用组件进行封装.首先我们就对最基本的菜单组件进行封装.下面我们先来观察下ligerui中树组件.        从上面的图片中,我们可以清楚的看到,这就是一棵树.树是一种常用的数据结构,下面引用百度百科的语句:   树的递归定义: 树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件: (1)有且仅有一个特定的称为根(Root)的结点: (2)其余的结点可分为m(m≥0)个互不相交的子集Tl,T2

后台管理UI

后台管理UI 目录 一.EasyUI 二.DWZ JUI 三.HUI 四.BUI 五.Ace Admin 六.Metronic 七.H+ UI 八.Admin LTE 九.INSPINIA 十.LigerUI 十一.其它UI 十二.总结 最近要做一个企业的OA系统,以前一直使用EasyUI,一切都好,但感觉有点土了,想换成现在流行的Bootstrap为基础的后台UI风格,想满足的条件应该达到如下几个: 1.美观.大方.简洁 2.兼容IE8.不考虑兼容IE6/IE7,因为现在还有很多公司在使用Wi

后台管理UI的选择

后台管理UI的选择 目录 一.EasyUI 二.DWZ JUI 三.HUI 四.BUI 五.Ace Admin 六.Metronic 七.H+ UI 八.Admin LTE 九.INSPINIA 十.LigerUI 十一.FineUI 十二.其它UI 十三.总结 最近要做一个企业的OA系统,以前一直使用EasyUI,一切都好,但感觉有点土了,想换成现在流行的Bootstrap为基础的后台UI风格,想满足的条件应该达到如下几个: 1.美观.大方.简洁 2.兼容IE8.不考虑兼容IE6/IE7,因为

后台管理UI皮肤的选择

后台管理UI的选择 目录 一.EasyUI 二.DWZ JUI 三.HUI 四.BUI 五.Ace Admin 六.Metronic 七.H+ UI 八.Admin LTE 九.INSPINIA 十.LigerUI 十一.FineUI 十二.其它UI 十三.总结 最近要做一个企业的OA系统,以前一直使用EasyUI,一切都好,但感觉有点土了,想换成现在流行的Bootstrap为基础的后台UI风格,想满足的条件应该达到如下几个: 1.美观.大方.简洁 2.兼容IE8.不考虑兼容IE6/IE7,因为

iOS开发UI篇—核心动画(UIView封装动画)(转摘)

iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画支持 执行动画所需要的工作由UIView类自动完成,但仍要在希望执行动画时通知视图,为此需要将改变属性的代码放在[UIViewbeginAnimations:nil context:nil]和[UIView commitAnimations]之间 常见方法解析: + (void)setAnimati

关于tween.js 封装的方法

今天做的是匀速情况下div的运动.首先开始之前先了解运动的原理 A------------>>BA移动到B 这段距离是总距离 用一个变量保存下来:var dA移动到B 移动的总次数  用一个变量保存下来:var cA移动到B 每次移动的距离   用一个变量保存下来:var s function move(obj,name,target,dur,fn){ var timer; //控制定时器 var c=parseInt(dur/30); //移动的总步数 var start=parseFloa

转:【WebDriver】封装GET方法来解决页面跳转不稳定的问题

在大多数测试环境中,网络或者测试服务器主机之间并不是永远不出问题的,很多时候一个客户端的一个跳转的请求会因为不稳定的网络或者偶发的其它异常hang死在那里半天不动,直到人工干预动作的出现.      而WebDriver测试执行时,偶然也会因此发生页面跳转或者加载的超时异常,而使得流程性的测试中断,给测试完整性和有效性带来很大的损失.其实这种问题很好解决,只需要重写或者封装一下GET方法来实现跳转就行了.      在做这个封装之前,我们得事先讲一下driver.get(url)和driver.

C# DataTable.Load 和 DbDataAdapter.Fill 方法的比较。附取消限制的方法

两个方法都能获取数据库数据,但是有区别. DataTable.Load 方法获取数据,并且把数据库中的各种限制也加载到了DataTable中,比如能否为NULL,是否自增列 而DbDataAdapter.Fill 方法只是简单的把数据获取出来 如果必须要用Load方法获取数据,并且想要去除掉数据库中的限制,可以使用以下代码 (SqlConnection举例) SqlCommand com = new SqlCommand("select * from LoginUser", con);

cmake管理visual studio无法显示头文件解决方法

原因 我们的跨平台项目使用cmake来管理的,但是windows下的小伙伴发现在visual studio上头文件没有加载进来,于是手工加载,事情过去了.然后,有一天我修改了CMakeLists.txt文件,visual studio居然自动去重新生成了项目,然后头文件就没有了.哭吧---- 解决方法 source_group 可以将文件分目录来显示在IDE中.所以,修改了一下base.cmake文件让所有的项目都能检索出头文件并显示在 include 文件夹中. file(GLOB_RECUR