中间件
Cowboy将请求处理委托给中间件组件。默认情况下,定义了两个中间件,用于路由和处理请求,在本指南的大部分内容中有详细介绍。
中间件让您完全控制如何处理请求。您可以将自己的中间件添加到其中,或者根据需要完全更改中间件链。
Cowboy将按照给定的顺序执行所有中间件,除非其中一个决定停止处理。
用法
中间件只需要实现一个回调:execute/2。它在cowboy_middleware行为中定义。
这个回调函数有两个参数。第一个是Req对象。第二是环境问题。
中间件可以返回以下三种不同的值:
{ok, Req, Env}继续请求处理{suspend, Module, Function, Args}进入休眠{stop, Req}停止处理并继续处理下一个请求
值得注意的是,当休眠时,处理将在给定的MFA上恢复,丢弃所有以前的堆栈跟踪。请确保将Req和Env保存在这个MFA的参数中以供以后使用。
如果在中间件处理过程中发生错误,Cowboy将不会尝试将错误发送回套接字,进程将崩溃。由中间件来确保在出现问题时发送应答。
配置
中间件环境被定义为env协议选项。在前面的章节中,当我们需要传递路由信息时,我们简要地看到了它。它是一个元组列表,第一个元素是atom,第二个是任何Erlang术语。
环境中有两个值是保留的:
- listener包含监听器的名称
- result包含处理的结果
listener值总是定义的。result值可以由任何中间件设置。如果设置为ok以外的任何内容,那么Cowboy将不会处理此连接上的任何后续请求。
伴随Cowboy而来的中间件可能定义或要求执行其他环境值。
你可以通过调用c

Cowboy框架允许通过中间件组件完全控制HTTP请求的处理。默认的中间件包括路由和请求处理,可按指定顺序执行。中间件需实现`execute/2`回调,并能返回继续处理、休眠或停止处理的指令。错误处理由中间件自身负责。配置中间件环境以添加或更新环境值。路由中间件负责调度,处理中间件则处理请求并设置结果。
最低0.47元/天 解锁文章
256

被折叠的 条评论
为什么被折叠?



