• 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代码,看起来实在费劲。

  • 相关阅读:
    BZOJ4401 块的计数
    poj2914 Minimum Cut 全局最小割模板题
    无向图求最小割集
    HDU3232 Crossing Rivers 数学期望问题
    poj1386 字符串类型的一笔画问题 欧拉回路
    HDU3018 几笔画(非1笔)
    欧拉路&&欧拉回路 概念及其练习
    欧拉回路基础 HDU1878 欧拉回路||并差集
    我的明天在何处
    哈夫曼树讲解
  • 原文地址:https://www.cnblogs.com/mentalidade/p/7084189.html
Copyright © 2020-2023  润新知