lua-resty-jsonrpc-server

用于 ngx_lua/openresty 的 JsonRPC 2.0 服务器

$ opm get rryqszq4/lua-resty-jsonrpc-server

lua-resty-jsonrpc-server

lua-resty-jsonrpc-server -- 用于 ngx_lua 的 JsonRPC 2.0 服务器

此 Lua 库是用于 ngx_lua nginx 模块的 JsonRPC 2.0 服务器。

概要

    lua_package_path "/path/to/lua-resty-jsonrpc-server/lib/?.lua;;";
    
    server {
        location /lua-jsonrpc-server {
                default_type "application/json";
    
                content_by_lua '
                local jsonrpc_server = require "resty.jsonrpc_server"
                local jsonrpc_demo = require "resty.jsonrpc_demo"
    
                local server = jsonrpc_server:new()
    
                local add1 = function(a, b)
                        return a + b
                end
    
                local register = server:register([[addition]], add1)
    
                local binder = server:bind([[addition1]], jsonrpc_demo, [[add1]])
    
                local result = server:execute()
                
                ngx.say(result);
    
                ';
        }
    }
    

Curl 测试

输入

    $ curl -d "{\"jsonrpc\":\"2.0\",\"method\":\"addition\", \"params\":[1,5]}" http://localhost/lua-jsonrpc-server

输出

    $ {"result":6,"jsonrpc":"2.0","id":"null"}

方法

new

语法: server, err = jsonrpc_server:new()

register

语法: ok, err = jsonrpc_server:register(procedure, closure)

bind

语法: ok, err = jsonrpc_server:bind(procedure, classname, method)

json_format

语法: ok, err = jsonrpc_server:json_format()

rpc_format

语法: ok, err = jsonrpc_server:rpc_format()

execute_procedure

语法: ok, err = jsonrpc_server:execute_procedure(payload_method, payload_params)

execute_callback

语法: ok, err = jsonrpc_server:execute_callback(method, params)

execute_method

语法: ok, err = jsonrpc_server:execute_method(method, params)

get_response

语法: ok, err = jsonrpc_server:get_response(data)

execute

语法: ok, err = jsonrpc_server:execute()

rpc_error

语法: ok, err = jsonrpc_server:rpc_error(code, message)

Jsonrpc 2.0 错误

    // Parse error
    {"jsonrpc":"2.0","id":null,"error":{"code":-32700,"message":"Parse error"}}
    
    // Invalid Request
    {"jsonrpc":"2.0","id":null,"error":{"code":-32600,"message":"Invalid Request"}}
    
    // Method not found
    {"jsonrpc":"2.0","id":null,"error":{"code":-32601,"message":"Method not found"}}
    
    // Invalid params
    {"jsonrpc":"2.0","id":null,"error":{"code":-32602,"message":"Invalid params"}}

作者

rryqszq4 <memwared@gmail.com>.

版权和许可

版权所有 (c) 2015, rryqszq4 保留所有权利。

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

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

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

本软件由版权持有人和贡献者“按现状”提供,任何明示或暗示的担保(包括但不限于对适销性和特定用途适用性的暗示担保)均被排除在外。在任何情况下,版权持有人或贡献者均不对任何直接、间接、附带、特殊、示例性或后果性损害(包括但不限于获取替代商品或服务的费用、使用、数据或利润的损失、业务中断)负责,无论任何责任理论(无论是合同、严格责任或侵权(包括疏忽或其他)),无论因使用本软件而引起或与之相关,即使已告知其发生此类损害的可能性。

作者

赵权 (rryqszq4)

许可证

2bsd

依赖项

luajit >= 2.1.0, nginx >= 1.6.3

版本