http服务
http服务已经接入了涵曦的wlua,扩展了路由和中间件模式,完整示例请看运行examples/webapp 源码。
默认webapp运行的是webapp_dispatch.lua
,想要切换其他示例,只需要更改load_mods.lua
中的dispatch即可。
1 |
|
- 处理没有命中路由
1 |
|
params路径方式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30--初始化一个纯净版
local app = engine_web:new()
--请求处理
M.dispatch = engine_web.dispatch(app)
--初始化
function M.init()
--注册全局中间件
app:use(logger_mid())
--/login 路径不会命中
--/login/123 会命中
app:get("/login/:player_id/*",function(c)
local params = c.params
local player_id = params.player_id
log.error("params:",params)
log.error("path:",c.req.path)
log.error("body:",c.req.body,c.req.body_raw)
c.res:set_rsp("hello " .. player_id,HTTP_STATUS.OK)
end)
app:run()
end
--服务退出
function M.exit()
endquery 和 post from
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27--初始化一个纯净版
local app = engine_web:new()
--请求处理
M.dispatch = engine_web.dispatch(app)
--初始化
function M.init()
--注册全局中间件
app:use(logger_mid())
app:post("/login",function(c)
local player_id = c.req.query.player_id
assert(player_id)
log.error("query:",c.req.query)
log.error("post from:",c.req.body)
c.res:set_rsp("hello " .. player_id,HTTP_STATUS.OK)
end)
app:run()
end
--服务退出
function M.exit()
endjson请求
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30--初始化一个纯净版
local app = engine_web:new()
--请求处理
M.dispatch = engine_web.dispatch(app)
--初始化
function M.init()
--注册全局中间件
app:use(logger_mid())
app:post("/login",function(c)
local player_id = c.req.query.player_id
assert(player_id)
log.error("query:",c.req.query)
log.error("json body:",c.req.body)
local rsp = {
msg = "hello " .. player_id
}
c.res:set_json_rsp(rsp)
end)
app:run()
end
--服务退出
function M.exit()
end自定义中间件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32--初始化一个纯净版
local app = engine_web:new()
--请求处理
M.dispatch = engine_web.dispatch(app)
--初始化
function M.init()
--注册全局中间件
app:use(logger_mid())
--自定义中间件
app:use(function(c)
log.info("process begin :",c.req.path,c.req.method)
--执行下一个中间件
c:next()
log.info("process end :",c.req.path,c.req.method)
end)
app:get("/",function(c)
log.info("end point process ",c.req.path,c.req.method)
c.res:set_rsp("hello skynet_fly",HTTP_STATUS.OK)
end)
app:run()
end
--服务退出
function M.exit()
end多路由组
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38--初始化一个纯净版
local app = engine_web:new()
--请求处理
M.dispatch = engine_web.dispatch(app)
--初始化
function M.init()
--注册全局中间件
app:use(logger_mid())
do
local v1 = app:group("v1")
v1:get('/login',function(c)
log.info("v1 login ")
end)
v1:get('/logout',function(c)
log.info("v1 logout ")
end)
end
do
local v2 = app:group("v2")
v2:get('/login',function(c)
log.info("v2 login ")
end)
v2:get('/logout',function(c)
log.info("v2 logout ")
end)
end
app:run()
end
--服务退出
function M.exit()
end多路由组中间件
1 |
|
单文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19--初始化一个纯净版
local app = engine_web:new()
--请求处理
M.dispatch = engine_web.dispatch(app)
--初始化
function M.init()
--注册全局中间件
app:use(logger_mid())
app:static_file('/login/test.webp','./static/test.webp')
app:run()
end
--服务退出
function M.exit()
end资源文件夹
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19--初始化一个纯净版
local app = engine_web:new()
--请求处理
M.dispatch = engine_web.dispatch(app)
--初始化
function M.init()
--注册全局中间件
app:use(logger_mid())
app:static_dir("/login","./static/imgs")
app:run()
end
--服务退出
function M.exit()
endBenchmark
skynet_fly
1 |
|
gin
1 |
|
http服务
https://huahua132.github.io/2023/02/25/skynet_fly_word/word_3/M_http/