zoukankan      html  css  js  c++  java
  • kong后台接口

    在nginx-kong.lua中,require('lapis').serve('kong.api'),先require文件/usr/local/share/lua/5.1/lapis/init.lua,调用serve函数。

    local application = require("lapis.application")
    local Application
    Application = application.Application
    local app_cache = { }
    setmetatable(app_cache, {    -- 弱引用table,清除可能的无法删除的垃圾对象
      __mode = "k"
    })
    local dispatcher
    local serve
    serve = function(app_cls)
      local app = app_cache[app_cls]
      if not (app) then
        local name = app_cls
        if type(name) == "string" then
          app_cls = require(name)
        end
        if app_cls.__base then
          app = app_cls()
        else
          app_cls:build_router()
          app = app_cls
        end
        app_cache[name] = app
      end
      if not (dispatcher) then
        if __leda then
          dispatcher = require("lapis.leda")
        else
          dispatcher = require("lapis.nginx")
        end
      end
      return dispatcher.dispatch(app)
    end
    return {
      serve = serve,
      application = application,
      Application = Application,
      app_cache = app_cache
    }
    

    serve函数引用kong.api,然后会require文件/usr/local/share/lua/5.1/kong/api/init.lua,这个文件返回一个对象app。
    local app = lapis.Application()
    调用上面那个init.lua的第二个方法Application(),

    Application = application.Application  =>  application.Application()  => /usr/local/share/lua/5.1/lapis.application.Application()
    

    里面就是实例化app对象,处理请求,错误处理,参数验证等。里面代码可能是moonScript生成的lua代码,看起来实在费劲。

  • 相关阅读:
    卷积神经网络入门(1) 识别猫狗
    lumen 获得当前uri 如/xxx/{id}
    React ES5 (createClass) 和 ES6 (class)
    lumen 单元测试
    mysql 高级语法手记
    react手记(componentWillMount,componentDidMount等)
    lumen 事件
    PDO drivers no value in Windows
    BindingNavigator操作DatagridView的数据
    <input type="hidden" id="haha" name="wang" value="xiaodong" />
  • 原文地址:https://www.cnblogs.com/mentalidade/p/7084189.html
Copyright © 2011-2022 走看看