这个模块定义 HTTP 相关的读操作的抽象。
概述
服务器从客户端读取传入的请求,而客户端从服务器读取返回的响应。
HttpReader 是读操作的基对象, ServerRequest 和 ClientResponse 继承自该对象。 ServerRequest 表示来自客户端的请求, ClientResponse 表示来自服务器的响应。
Types
HttpReader = ref object of RootObj conn: HttpConnection lock: AsyncLock header*: HttpHeader metadata: HttpMetadata onEnd: proc () {...}{.gcsafe, closure.} contentLen: Natural chunked: bool readable: bool
- 表示 HTTP 相关的读操作。 Source Edit
ServerRequest = ref object of HttpReader
- 表示来自客户端的请求。 Source Edit
ClientResponse = ref object of HttpReader
- 表示来自服务器的响应。 Source Edit
Procs
proc newServerRequest(conn: HttpConnection; onEnd: proc () {...}{.gcsafe, closure.}): ServerRequest {...}{. raises: [], tags: [].}
- 创建一个新的 ServerRequest 。 Source Edit
proc newClientResponse(conn: HttpConnection; onEnd: proc () {...}{.gcsafe, closure.}): ClientResponse {...}{. raises: [], tags: [].}
- 创建一个新的 ClientResponse 。 Source Edit
proc reqMethod(req: ServerRequest): HttpMethod {...}{.inline, raises: [], tags: [].}
- 返回请求方法。 Source Edit
proc url(req: ServerRequest): string {...}{.inline, raises: [], tags: [].}
- 返回 url。 Source Edit
proc status(res: ClientResponse): HttpCode {...}{.inline, raises: [], tags: [].}
- 返回状态码。 Source Edit
proc version(reader: HttpReader): HttpVersion {...}{.inline, raises: [], tags: [].}
- 返回 HTTP 版本。 Source Edit
proc fields(reader: HttpReader): HeaderFields {...}{.inline, raises: [], tags: [].}
- 返回头字段集合。 Source Edit
proc metadata(reader: HttpReader): HttpMetadata {...}{.inline, raises: [], tags: [].}
- 返回元数据。 Source Edit
proc ended(reader: HttpReader): bool {...}{.inline, raises: [], tags: [].}
- 如果底部连接已断开或无法读取更多数据,则返回 true 。 Source Edit
proc normalizeSpecificFields(reader: HttpReader) {...}{.raises: [], tags: [].}
- 规范化一些特殊的头字段。 Source Edit
proc read(reader: HttpReader; buf: pointer; size: range[int(LimitChunkDataLen) .. high(int)]): Future[Natural] {...}{. raises: [], tags: [].}
-
读取数据直到 size 字节,读取的数据填充在 buf 。
返回值是实际读取的字节数。这个值可能小于 size``。 ``0 值表示 EOF ,即无法读取更多数据。
如果读过程中出现系统错误,则会触发 OSError 异常;如果在成功读取之前连接断开,则会触发 ReadAbortedError 异常。
Source Edit proc read(reader: HttpReader): Future[string] {...}{.raises: [], tags: [].}
-
读取数据直到 size 字节,读取的数据以字符串返回。
如果返回值是 ""``, 表示 ``EOF ,即无法读取更多数据。
如果读过程中出现系统错误,则会触发 OSError 异常;如果在成功读取之前连接断开,则会触发 ReadAbortedError 异常。
Source Edit proc readAll(reader: HttpReader): Future[string] {...}{.raises: [], tags: [].}
-
读取所有可读的数据,以字符串返回。
如果读过程中出现系统错误,则会触发 OSError 异常;如果在成功读取之前连接断开,则会触发 ReadAbortedError 异常。
Source Edit proc readDiscard(reader: HttpReader): Future[void] {...}{.raises: [], tags: [].}
-
读取所有可读的数据,并丢掉这些数据。
如果读过程中出现系统错误,则会触发 OSError 异常;如果在成功读取之前连接断开,则会触发 ReadAbortedError 异常。
Source Edit