cowboy
文章平均质量分 75
mt4836
走别人的路,让别人无路可走
展开
-
Cowboy2.8 - 函数参考
Cowboy函数参考名称cowboy -小型、快速、现代的Erlang/OTP HTTP服务器描述Cowboy是Erlang/OTP的HTTP服务器,支持HTTP/1.1、HTTP/2和Websocket协议。Cowboy的目标是提供一个完整的HTTP栈。这包括HTTP rfc的实现,也包括任何直接相关的标准,如Websocket或Server-Sent Events。模块函数:cowboy(3)-监听器管理 cowboy_req(3)- 请求和响应 cowboy...原创 2021-04-08 15:35:15 · 227 阅读 · 0 评论 -
Cowboy 用户指南 (二十四) - Performance
性能本章描述了Cowboy的性能特征,并提供了提高应用程序性能的建议每个连接一个进程Cowboy 的第一个版本的特点是每个连接一个进程,而Cowboy 的当前版本的特点是每个连接一个进程加上每个请求一个进程。这对性能有负面影响,但为了为HTTP/1.1和HTTP/2(以及未来的HTTP版本)提供公共接口,这是必要的。仍然可以对每个连接使用单个进程,并通过实现流处理程序来处理请求,从而避免为每个请求创建额外的进程。这可以针对所有请求,也可以仅针对单个端点,具体取决于应用程序的需求。流处理程原创 2021-04-08 15:34:49 · 203 阅读 · 0 评论 -
Cowboy 用户指南 (二十三) - Middlewares
中间件Cowboy将请求处理委托给中间件组件。默认情况下,定义了两个中间件,用于路由和处理请求,在本指南的大部分内容中有详细介绍。中间件让您完全控制如何处理请求。您可以将自己的中间件添加到其中,或者根据需要完全更改中间件链。Cowboy将按照给定的顺序执行所有中间件,除非其中一个决定停止处理。用法中间件只需要实现一个回调:execute/2。它在cowboy_middleware行为中定义。这个回调函数有两个参数。第一个是Req对象。第二是环境问题。中间件可以返回以下三种不同的值原创 2021-04-08 15:34:18 · 208 阅读 · 0 评论 -
Cowboy 用户指南 (二十二) - Streams
流流是一组形成HTTP请求/响应对的消息。术语流来自HTTP/2。在Cowboy中,它也用于谈论HTTP/1.1或HTTP/1.0。它不应该与流请求或响应主体相混淆。所有版本的HTTP都允许客户端发起流。HTTP/2是唯一一个允许服务器的协议,通过其服务器推送功能。客户端和服务器发起的流在Cowboy中都经过相同的过程。流处理程序流处理器必须实现五个不同的回调。其中4个是直接相关的;一个是特别的。所有回调函数都会接收流ID作为第一个参数。它们中的大多数都可以返回要由Cowboy执原创 2021-04-07 17:16:45 · 206 阅读 · 0 评论 -
Cowboy 用户指南 (二十一) - Websocket handlers
Websocket 处理程序Websocket处理程序提供了一个升级到Websocket的HTTP/1.1连接的接口,并在Websocket连接上发送或接收帧。由于Websocket连接是通过HTTP/1.1升级机制建立的,所以Websocket处理器需要能够首先接收升级的HTTP请求,然后切换到Websocket并接管连接。然后,它们可以接收或发送Websocket帧,处理传入的Erlang消息或关闭连接。升级当接收到请求时,调用init/2回调函数。要建立Websocket连接,你必须切原创 2021-04-07 17:12:40 · 754 阅读 · 0 评论 -
Cowboy 用户指南 (二十) - The Websocket protocol
Websocket协议本章将解释什么是Websocket,以及为什么它是软实时Web应用程序的重要组件。描述Websocket是对HTTP的扩展,它模拟客户端(通常是Web浏览器)和服务器之间的纯TCP连接。它使用HTTP升级机制建立连接。Websocket连接是完全异步的,不像HTTP/1.1(同步)和HTTP/2(异步,但是服务器只能发起流来响应请求)。使用Websocket,客户端和服务器都可以在任何时间发送帧而不受任何限制。它比任何HTTP协议都更接近TCP。Websocket是原创 2021-04-07 16:31:56 · 301 阅读 · 0 评论 -
Cowboy 用户指南 (十九) - 设计资源处理程序
设计资源处理程序本章旨在为您提供一个问题列表,您必须回答这些问题才能编写一个好的资源处理器。它是一个可用的一步一步指南。服务服务会不可用吗?当它不可用时,我们能检测到它吗?例如,数据库连接问题可以及早检测到。我们也可能计划停用系统的全部或部分。实现service_available回调。服务实现了哪些HTTP方法?我们需要更多的标准OPTIONS,HEAD, GET, PUT, POST, PATCH和DELETE吗?我们不用这些东西吗?实现known_methods回调函数。资源处理程原创 2021-04-07 16:13:22 · 197 阅读 · 0 评论 -
Cowboy 用户指南 (十八) - REST流程图
REST 流程图本章将通过许多不同的图来解释REST处理程序状态机。请求可以遵循四种主要路径。一个用于方法OPTIONS;一个用于方法GET和HEAD;一为PUT、POST、PATCH方法;一个用于方法DELETE。所有路径都从“开始”图开始,如果资源存在,那么除了选项路径之外的所有路径都会经过“内容协商”图,或者可以选择的“条件请求”图。红色方块代表另一个图表。浅绿色方块表示响应。其他方块可能是Cowboy自己应答的一个问题或回调。如果回调函数未定义,绿色箭头往往指示默认行为。值旁边的星号原创 2021-04-07 15:47:31 · 502 阅读 · 0 评论 -
Cowboy 用户指南 (十八) - REST 处理程序
REST 处理程序REST在Cowboy中作为一个子协议实现。请求被作为一个状态机处理,其中包含许多描述资源和修改机器行为的可选回调。REST处理程序是处理HTTP请求的推荐方法。初始化首先,调用init/2回调函数。这个回调对所有处理程序都是通用的。为了在当前请求中使用REST,这个函数必须返回一个cowboy_rest元组。init(Req, State) -> {cowboy_rest, Req, State}.然后Cowboy将切换到REST协议并开始原创 2021-04-07 15:24:05 · 240 阅读 · 0 评论 -
Cowboy 用户指南 (十七) - REST 原理
REST 原理本章将尝试定义REST背后的概念,并解释什么使服务具有RESTful。REST常常与根据HTTP方法执行不同的操作相混淆,同时使用的方法比GET和POST方法更多。这充其量是一种高度误导。我们将首先尝试定义REST,并研究它在HTTP和Web上下文中的含义。要想更深入地解释REST,你可以阅读Roy T. Fielding's dissertation,因为它很好地解释了REST的来源和成就。REST 架构REST是一种客户机-服务器架构。客户端和服务器都有不同的关注点。.原创 2021-04-07 15:16:15 · 325 阅读 · 1 评论 -
Cowboy 用户指南 (十六) - Multipart requests
multipart(多部件)请求Multipart(多部件)源自MIME, MIME是一种扩展电子邮件格式的互联网标准。multipart消息是一个部件列表。一个部件包含报头和主体。部件的主体可以是任何媒体类型,并包含文本或二进制数据。部件可以包含多部件媒体类型。在HTTP上下文中,multipart最常与multipart/form-data媒体类型一起使用。浏览器使用它通过HTML表单上传文件。multipart/byteranges也很常见。它是用于从资源发送任意字节的媒体类型,使客户原创 2021-04-07 15:04:04 · 237 阅读 · 0 评论 -
Cowboy 用户指南 (十五) - Using cookies
使用cookiecookie是一种允许应用程序在无状态HTTP协议之上维护状态的机制。cookie是一种name/value存储,其中的名称和值以纯文本形式存储。它们会在浏览器关闭或延迟后过期。它们可以配置在特定的域名或路径上,并限制为安全资源(通过HTTPS发送或下载),或限制为服务器(不允许客户端脚本访问)。Cookie名称实际上是区分大小写的。cookie存储在客户端,并随着与存储它们的域和路径相匹配的每个后续请求一起发送,直到它们过期。这将产生不可忽略的成本。不应该认为cooki原创 2021-04-07 14:51:35 · 195 阅读 · 0 评论 -
Cowboy 用户指南 (十四) - Sending a response
发送一个响应必须使用Req对象发送响应。Cowboy提供了两种不同的发送响应的方式:直接发送或通过流传递主体。响应报头和响应主体可以预先设置。一旦响应或流应答函数被调用,响应就被发送。Cowboy还提供了一个发送文件的简化接口。它也只能发送文件的特定部分。虽然每个请求只允许一个响应,但HTTP/2引入了一种机制,允许服务器推送与响应相关的额外资源。本章还描述了这个特性在Cowboy中的工作原理。响应Cowboy提供了三个函数来发送整个回复,这取决于您是否需要设置报头和正文。在任何情况原创 2021-04-07 14:43:33 · 312 阅读 · 0 评论 -
Cowboy 用户指南 (十三) - Reading the request body
读取请求主体可以使用Req对象读取请求主体。Cowboy不会试图读取主体,除非有人要求。您需要调用主体读取函数来检索它。Cowboy不会缓存主体,因此只能读取一次。但是,你不需要阅读它。如果有主体存在但没有被读取,Cowboy会取消或跳过它的下载,这取决于协议。Cowboy提供了一些函数来读取主体原始信息,并从urlencoded或多部分主体中读取和解析。后者在它自己的章节中有讨论。请求主体的存在并不是所有的请求都伴随着一个主体。你可以用这个函数来检查请求体是否存在:c原创 2021-04-06 20:18:46 · 315 阅读 · 0 评论 -
Cowboy 用户指南 (十二) - Request details
请求对象Req对象是一个变量,用于获取关于请求的信息、读取请求体或发送响应。在面向对象的意义上,它并不是一个真正的对象。它是一个简单的映射,可以在调用cowboy_req模块的函数时直接访问或使用。Req对象是几个不同章节的主题。在本章中,我们将了解Req对象,并了解如何检索有关请求的信息。Direct accessReq映射包含许多文档化的字段,可以直接访问这些字段。它们是直接映射到HTTP的字段:使用的HTTP版本;有效的URI组件方案、主机、端口、路径和qs请求头;连接对端地址和端原创 2021-04-06 19:30:27 · 758 阅读 · 0 评论 -
Cowboy 用户指南 (十一) - Static files
静态文件Cowboy附带了一个可用于提供静态文件的处理程序。它是为了方便在开发过程中提供文件。对于生产中的系统,考虑使用市场上可用的多种内容分发网络(CDN)中的一种,因为它们是提供文件服务的最佳解决方案。静态处理程序可以为给定目录中的一个文件或所有文件提供服务。可以配置etag生成和mime类型。提供一个文件您可以使用静态处理程序为应用程序私有目录中的特定文件提供服务。这对于提供索引特别有用。例如,当客户端请求/ path时。配置的路径是相对于给定应用程序的私有目录的。下面的规则将原创 2021-04-04 22:22:55 · 298 阅读 · 0 评论 -
Cowboy 用户指南 (十) - Loop handlers
循环处理程序循环处理程序是一种特殊的HTTP处理程序,当响应不能立即发送时使用。处理程序进入一个接收循环,等待正确的消息,然后才能发送响应。循环处理程序用于响应可能不能立即可用,但您希望在响应到达时保持连接打开一段时间的请求。这种做法最著名的例子就是长轮询。循环处理程序还可以用于响应部分可用且需要在连接打开时流化(stream)响应体的请求。这种实践最著名的例子是服务器发送事件(server-sent events),但它也适用于任何需要很长时间发送的响应。虽然使用普通HTTP处理程序也可以原创 2021-04-04 22:02:00 · 168 阅读 · 0 评论 -
Cowboy 用户指南 (九) - Handlers
Handlers(处理程序)处理程序是处理HTTP请求的Erlang模块。普通的HTTP处理程序Cowboy中最基本的处理程序实现了强制的init/2回调,操作请求,可选地发送响应,然后返回。这个回调接收到Req对象和路由器配置中定义的初始状态。一个不做任何事情的处理程序是这样的:init(Req, State) -> {ok, Req, State}.尽管没有发送应答,一个204 No Content响应将发送到客户端,因为Cowboy确保为每个请求发送响原创 2021-04-04 21:50:51 · 228 阅读 · 0 评论 -
Cowboy 用户指南 (八) - Constraints
约束约束是用来验证和转换用户输入的函数。它们被用于Cowboy中的各个地方,包括路由器和cowboy_req匹配函数。语法约束以字段列表的形式提供。对于列表中的每个字段,可以应用特定的约束,如果字段缺失,还可以应用默认值。字段可以是一个atom的字段、一个带约束的{field, constraints}元组或一个带约束(默认值为{field, constraints, default})的元组。字段形式表示该字段为必选字段。注意,当与路由器一起使用时,只有第二种形式才有意义,因为它不原创 2021-04-04 21:40:11 · 250 阅读 · 0 评论 -
Cowboy 用户指南 (七) - Routing
路由Cowboy 默认不执行任何操作.要使Cowboy有用,需要将URI映射到负责处理请求的Erlang模块。这被称为路由。URI,统一资源标志符(Uniform Resource Identifier, URI),表示的是web上每一种可用的资源,如 HTML文档、图像、视频片段、程序等都由一个URI进行标识的。Cowboy使用以下算法路由请求:如果没有配置的主机与请求URI匹配,则返回400响应。 否则,将使用第一个配置的和请求URI匹配的主机。只考虑为该主机配置的路径。 如果上原创 2021-04-04 21:27:33 · 461 阅读 · 0 评论 -
Cowboy 用户指南 (六) - Listeners
监听器监听器是一组在端口上监听新连接的进程。传入的连接由Cowboy处理。连接握手,可以使用一种或另一种协议。这一章是针对Cowboy的。有关监听器的更多信息,请参阅Ranch User Guide。Cowboy提供了两种类型的监听器:一种监听clearTCP连接,另一种监听安全的TLS连接。它们都支持HTTP/1.1和HTTP/2协议。Clear TCP 监听器clearTCP监听器将接受给定端口上的连接。典型的HTTP服务器将监听端口80。然而,端口80在大多数平台上需要特殊的权..原创 2021-04-02 16:39:56 · 466 阅读 · 3 评论 -
Cowboy 用户指南 (五) - Flow diagram
流程图Cowboy是一个轻量级的HTTP服务器,支持HTTP/1.1、HTTP/2和Websocket。它建立在Ranch的基础上。有关如何处理网络连接的更多信息,请参阅Ranch指南。Overview正如您在图中看到的,客户端首先连接到服务器。这个步骤由Ranch acceptor处理,这是一个专门用于接受新连接的进程。Ranch接受新连接后,无论是HTTP/1.1还是HTTP/2连接,Cowboy都会开始接收并处理请求。在HTTP/1.1中,所有的请求都是顺序来的。在HTTP原创 2021-04-02 16:10:14 · 327 阅读 · 0 评论 -
Cowboy 用户指南 (四) - Getting started
入门指南Erlang不仅仅是一种语言,它还是应用程序的操作系统。Erlang开发人员很少编写独立的模块,他们编写库或应用程序,然后将它们捆绑到所谓的发布中。发布版包含Erlang VM以及运行该节点所需的所有应用程序,因此可以直接将其push到生产环境。本章将带领您完成设置Cowboy、编写第一个应用程序和生成第一个发行版的所有步骤。在本章的最后,你应该知道将你的第一个Cowboy应用push到产品所需的一切。预备知识我们将使用Erlang.mk来构建系统。如果您正在使用Windows,请阅原创 2021-04-02 15:43:11 · 328 阅读 · 0 评论 -
Cowboy 用户指南 (三) - Introduction
介绍Cowboy是面向Erlang/OTP的小型、快速、现代的HTTP服务器Cowboy的目标是提供一个完整的现代Web堆栈。这包括HTTP/1.1, HTTP/2, Websocket,Server-Sent Events和Webmachine-based REST。Cowboy提供了内省和跟踪功能,使开发人员能够在任何时候准确地知道发生了什么。它的模块化设计也使开发人员能够轻松地添加工具。Cowboy是一个高质量的工程。它有一个小的代码库,非常高效(在延迟和内存使用方面),并且可以很容易原创 2021-04-02 15:19:23 · 547 阅读 · 0 评论 -
Cowboy 用户指南 (二) - Erlang and the Web
Erlang 和 WebErlang是编写Web应用程序的理想平台。它的特性完全符合现代Web应用程序的需求。Web是并发的当你只访问一个网站时是几乎没有并发性的。打开几个连接,并通过这些连接发送请求。然后web页面就会显示在您的屏幕上。您的浏览器将只打开4或8个连接到服务器,取决于您的设置。这不是很多。但是想想看。您不是同时访问服务器的唯一用户。在同一时间,可能有成百上千甚至数百万的连接连接到同一台服务器。即使在今天,生产中使用的许多系统都没有解决C10K问题(1万个并发连接)。而那些原创 2021-04-01 18:00:31 · 528 阅读 · 0 评论 -
Cowboy 用户指南 (一) - The modern Web
现代网络Cowboy是一个现代网络服务器. 这一章解释了它的含义,并详细介绍了所有涉及的标准。Cowboy支持本文档中列出的所有标准。HTTP/2HTTP/2是消费Web服务最有效的协议。它允许clients保持一个长时间打开的(connection),为了并发的发送requests;还可以通过压缩HTTP headers来减少requests的size;等等。该协议是binary(二进制)的,大大减少了解析它所需的资源。HTTP/2也允许Server向Client推送消息。这可以用于各种目原创 2021-04-01 17:26:44 · 574 阅读 · 0 评论 -
Nine Nines Cowboy用户指南
Cowboy 用户指南基本原理现代网络The modern Web Erlang 和 WebErlang and the Web介绍介绍-Introduction 入门指南 -Getting started 流程图-Flow diagram配置监听器Listeners 路由-Routing 约束 -ConstraintsHandlers(处理器)处理器-Handlers 循环处理器-Loop handlers 静态文件-Static files...原创 2021-04-01 16:52:15 · 238 阅读 · 0 评论