美文网首页程序员开源工具技巧
Kong 插件开发 - 扩展 Admin API

Kong 插件开发 - 扩展 Admin API

作者: 重剑无锋_Augustine | 来源:发表于2017-02-14 18:01 被阅读1778次

    module

    "kong.plugins.<plugin_name>.api"
    

    用户通过 Admin API 来配置 Kong。如果你的插件有自定义实体或者管理的需求,你就需要扩展 Admin API。这将允许你暴露你自己的接口来实现你自己的管理逻辑。这里的例子将实现对 API keys的创建、检索和删除。

    Admin API 是一个 Lapis 的应用。Kong 的抽象层将使你简单的添加接口。

    这章假设你有一定的 Lapis相关的知识。

    添加一个接口到 Admin API

    如果按照下边的命名方式来定义module, Kong 将检索并加载你的接口:

    "kong.plugins.<plugin_name>.api"
    

    这个模块是一个返回包含描述路由的字符串,和 HTTP 支持的方法。路由将赋值一个简单的处理函数。例如:

    return {
      ["/my-plugin/new/get/endpoint"] = {
        GET = function(self, dao_factory, helpers)
          -- ...
        end
      }
    }
    

    这个处理函数有3个三处,分别是:

    • self: 请求的对象
    • dao_factory: DAO Factory
    • helpers: 一个包含一些helpers的 table。

    除了支持的 HTTP 方法之外,路由 table 还可以包含以下两个 keys:

    • befor: 像在 Lapis, befor_filter 值 动作方法之前执行
    • on_error: 一个重写Kong提供的自定义的错误处理函数。

    helpers

    在处理一个 Admin API 请求的时候,有时候希望发送响应并处理错误,帮助做这些的是第三个参数:helpres,它有以下属性:

    • response:
    • yield_error: 这个函数来源于 Lapis。当处理程序遇到错误的时候调用。所有Kong的错误都有上下文的 table, 所以它可以根据这些错误发送对应的响应码。

    curl_helpers

    要实现的接口中大多数都有 CRUD 操作,你也可以使用 kong.api.curd_helpers 模块。这个模块提供为插入、检索、更新或删除操作 和 执行一些必要的 DAO 操作 和相应适当的 HTTP 状态码提供了一些helpers。它也提供了从 path中获取参数,例如 API 的名字或 ID, 或者消费者名字或 ID。

    例如:

    local crud = require "kong.api.crud_helpers"
    
    return {
      ["/consumers/:username_or_id/key-auth/"] = {
        before = function(self, dao_factory, helpers)
          crud.find_consumer_by_username_or_id(self, dao_factory, helpers)
          self.params.consumer_id = self.consumer.id
        end,
    
        GET = function(self, dao_factory, helpers)
          crud.paginated_set(self, dao_factory.keyauth_credentials)
        end,
    
        PUT = function(self, dao_factory)
          crud.put(self.params, dao_factory.keyauth_credentials)
        end,
    
        POST = function(self, dao_factory)
          crud.post(self.params, dao_factory.keyauth_credentials)
        end
      }
    }
    

    相关文章

      网友评论

        本文标题:Kong 插件开发 - 扩展 Admin API

        本文链接:https://www.haomeiwen.com/subject/ezffwttx.html