Cowboy 框架:发送 HTTP 调用

Posted

技术标签:

【中文标题】Cowboy 框架:发送 HTTP 调用【英文标题】:Cowboy framework: Sending HTTP calls 【发布时间】:2021-11-13 22:38:56 【问题描述】:

我想在 Cowboy 框架中发送一个 HTTP 请求,并读取响应的正文。是否有任何元级别的功能可以这样做,或者我应该去 Erlang 去做?从文档中我只看到“处理程序”。任何帮助表示赞赏。

【问题讨论】:

Cowboy 是一个 HTTP 服务器,发送 HTTP 请求需要一些 HTTP 客户端,例如 hackney github.com/benoitc/hackney。 【参考方案1】:

cowboy 是一个 Erlang 服务器应用程序,但要发送 HTTP 请求,您可以使用 gun、shot 等库,或者您可以直接使用 Erlang 开箱即用的 httpc。

【讨论】:

【参考方案2】:

Cowboy 是一个 Web 服务器,它不是一个框架。它不提供发送请求和接收响应的 HTTP 客户端功能。它的作用是相反的,它支持接收来自客户端的请求并响应它们。

为了发送请求,您需要 HTTP 客户端。在 Erlang 中,您可以从几个中进行选择。 httpc 是 Erlang 发行版的一部分。开发 Cowboy 的团队还创建了 Gun,一个异步 HTTP 客户端。还有其他几个。

【讨论】:

为什么cowboy不能归类为web​​框架? @Viacheslav Cowboy 直接相当于 Apache 或 nginx 等软件包。它们通常被描述为 Web 服务器而不是 Web 框架。框架通常支持模板、会话管理、数据库访问等功能。我认为将 Cowboy 称为 Web 框架会产生误导,Cowboy 作者说“cowboy - 适用于 Erlang/OTP 的小型、快速、现代 HTTP 服务器”。 我明白了。知道了。看起来牛仔 github 页面中的标签 web-framework 误导了我。据我了解,cowboy 可以归类为 web 服务器 erlang 库或应用程序,因为模板可以由 erlydtl 完成,而数据库访问可以由其他类似的库和应用程序(如 epgsql、eredis 等)完成。然后当我们收集 cowboy/gun/epgsql/eredis 时我们可以说这是一个网络框架——对吗? @Viacheslav 正确!

以上是关于Cowboy 框架:发送 HTTP 调用的主要内容,如果未能解决你的问题,请参考以下文章

Widevine android 框架 DrmInfoRequest 作为 HTTP POST 发送

Python的Flask框架应用调用Redis队列数据的方法

leptus和cowboy之间某些库的转换

Erlang cowboy 处理不规范的client

Java基础:动态代理在RPC框架中应用

centos安装cowboy过程