netkit/http/reader

这个模块定义 HTTP 相关的读操作的抽象。

概述

服务器从客户端读取传入的请求,而客户端从服务器读取返回的响应。

HttpReader 是读操作的基对象, ServerRequestClientResponse 继承自该对象。 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