lua-resty-stack

Openresty 简单应用栈

$ opm get antonheryanto/lua-resty-stack

lua-resty-stack

Openresty 简单应用栈

Beta 质量,已投入生产使用

描述

基于 REST 的应用栈

待办事项

  • 更多测试

  • 用户自定义路由模块/:id/action

安装

  • 下载或克隆此仓库

  • 将 lib/resty/stack.lua 复制到 (Openresty 路径)/lualib/resty/ 或 (应用路径)/resty

如何使用

推荐的应用文件夹结构

  • conf

    • nginx.conf

  • resty

    • stack.lua

    • post.lua -- 可选,用于高级后处理,例如表单数据、JSON 和文件上传

    • template.lua -- 可选,用于模板覆盖渲染

  • api

    • config.lua

    • app.lua

    • hello.lua

`nginx.conf daemon off; master process off; error_log log/error.log warn; event {} http { client_body_temp_path logs; fastcgi_temp_path logs; proxy_temp_path logs; scgi_temp_path logs; uwsgi_temp_path logs; init_by_lua_file "api/app.lua"; lua_code_cache off; server { listen 127.0.0.1:8080; location /api { content_by_lua_block { local app = require 'api.app' app:run() } } } }

    config.lua
    ```lua
    return {
        debug = true,
        redis = { host = '127.0.0.1', port = 6379 },
    }

app.lua

        local stack = require 'resty.stack'
        local config = require 'api.config'
        local app = stack:new(config)
        app:service ({ api = {
            'hello'
        }})
        return app

hello.lua

    local _M = {}
    
    function _M.get(self)
      return "get Hello"
    end
    
    function _M.post(self)
      return "post Hello"
    end
    
    function _M.delete(self)
      return "delete Hello"
    end
    
    return _M


    $ nginx -p .

方法

new

语法:app = stack:new(config)

使用配置参数初始化新的栈应用

use

语法:app:use(path, fn)

注册函数或模块

  • path

    与函数匹配的路由 URL 路径。如果 path 是函数,则 path 为当前位置

  • fn

    访问路径时执行的函数

service

语法:app:service(services)

使用 Lua 表格注册服务

  • services

    要加载的服务表格

run

语法:app:run()

运行应用

authorize

语法:function app.authorize(self) end

实现授权函数以保护模块

render

语法:function app.render(self) end

实现可插拔渲染以覆盖默认渲染

begin_request

语法:function app.begin_request(self) end

实现请求开始钩子

end_request

语法:function app.end_request(self) end

实现请求结束钩子

版权和许可

此模块在 BSD 许可证下授权。

版权所有 (C) 2014 - 2015,作者 Anton Heryanto <anton.heryanto@gmail.com>。

保留所有权利。

在满足以下条件的情况下,允许以源代码和二进制形式重新分发和使用,无论是否修改:

  • 源代码的重新分发必须保留上述版权声明、此条件列表以及以下免责声明。

  • 二进制形式的重新分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、此条件列表以及以下免责声明。

本软件由版权持有人和贡献者“按原样”提供,并且不提供任何明示或暗示的担保,包括但不限于适销性和特定用途适用性的暗示担保。在任何情况下,版权持有人或贡献者均不对任何直接、间接、附带、特殊、惩罚性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润损失;或业务中断)负责,无论这些损害是基于合同、严格责任或侵权(包括疏忽或其他原因)产生的,即使已被告知此类损害的可能性。

另请参阅

作者

Anton Heryanto

许可证

2bsd

版本