Cowboy 用户指南 (二十三) - Middlewares

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

中间件

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值