lor
lor copied to clipboard
多级处理函数中,如果中间有nil方法.将造成异常结束且无任何提示和报错
使用如下代码,其中util.auth_ip是一个通用写好的且存在的校验访问ip是否合法的方法 util.auth_jsonbody是一个nil
local user_router = lor:Router()
user_router:get("/test", util.auth_ip,util.auth_jsonbody,function(req, res, next)
res:status(200):send("unknown error")
end)
app:use("/cloud/v1", user_router())
app:run()
curl -v http://127.0.0.1:4001/cloud/v1/test
* About to connect() to 127.0.0.1 port 4001 (#0)
* Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 4001 (#0)
> GET /cloud/v1/test HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 127.0.0.1:4001
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: openresty
< Date: Fri, 16 Mar 2018 07:10:39 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< Vary: Accept-Encoding
<
* Connection #0 to host 127.0.0.1 left intact
200状态码返回,但是没有任何body,日志中也无任何错误提示 显然不符合预期
鉴于 OpenResty ISSUE 1585 原因,目前无法实现