Spec-Zone.ru › Nim

std/httpcore

ИсточникРедактировать

Содержит функциональность, общую для модулей httpclient и asynchttpserver.

Нестабильный API.

Импорты

since, tables, strutils, parseutils

Типы

HttpCode = distinct range[0 .. 599]
Источник Редактировать
HttpHeaders = ref object
  table*: TableRef[string, seq[string]]
Источник Редактировать
HttpHeaderValues = distinct seq[string]
Источник Редактировать
HttpMethod = enum
  HttpHead = "HEAD",        ## Asks for the response identical to the one that
                             ## would correspond to a GET request, but without
                             ## the response body.
  HttpGet = "GET",          ## Retrieves the specified resource.
  HttpPost = "POST",        ## Submits data to be processed to the identified
                             ## resource. The data is included in the body of
                             ## the request.
  HttpPut = "PUT",          ## Uploads a representation of the specified
                             ## resource.
  HttpDelete = "DELETE",    ## Deletes the specified resource.
  HttpTrace = "TRACE",      ## Echoes back the received request, so that a
                             ## client
                             ## can see what intermediate servers are adding or
                             ## changing in the request.
  HttpOptions = "OPTIONS",  ## Returns the HTTP methods that the server
                             ## supports for specified address.
  HttpConnect = "CONNECT",  ## Converts the request connection to a transparent
                             ## TCP/IP tunnel, usually used for proxies.
  HttpPatch = "PATCH"        ## Applies partial modifications to a resource.
запрашиваемый HttpMethod Источник Редактировать
HttpVersion = enum
  HttpVer11, HttpVer10
Источник Редактировать

Константы

headerLimit = 10000
Исходный код Редактировать
Http100 = 100
Исходный код Редактировать
Http101 = 101
Исходный код Редактировать
Http102 = 102
https://tools.ietf.org/html/rfc2518.html WebDAV Исходный код Редактировать
Http103 = 103
https://tools.ietf.org/html/rfc8297.html Предварительные подсказки Исходный код Редактировать
Http200 = 200
Исходный код Редактировать
Http201 = 201
Исходный код Редактировать
Http202 = 202
Исходный код Редактировать
Http203 = 203
Исходный код Редактировать
Http204 = 204
Исходный код Редактировать
Http205 = 205
Исходный код Редактировать
Http206 = 206
Исходный код Редактировать
Http207 = 207
https://tools.ietf.org/html/rfc4918.html WebDAV Исходный код Редактировать
Http208 = 208
https://tools.ietf.org/html/rfc5842.html WebDAV, Раздел 7.1 Исходный код Редактировать
Http226 = 226
https://tools.ietf.org/html/rfc3229.html Кодирование дельты, Раздел 10.4.1 Исходный код Редактировать
Http300 = 300
Исходный код Редактировать
Http301 = 301
Исходный код Редактировать
Http302 = 302
Исходный код Редактировать
Http303 = 303
Исходный код Редактировать
Http304 = 304
Исходный код Редактировать
Http305 = 305
Исходный код Редактировать
Http307 = 307
Исходный код Редактировать
Http308 = 308
Исходный код Редактировать
Http400 = 400
Исходный код Редактировать
Http401 = 401
Исходный код Редактировать
Http402 = 402
https://tools.ietf.org/html/rfc7231.html Требуется оплата, Раздел 6.5.2 Исходный код Редактировать
Http403 = 403
Исходный код Редактировать
Http404 = 404
Исходный код Редактировать
Http405 = 405
Исходный код Редактировать
Http406 = 406
Исходный код Редактировать
Http407 = 407
Исходный код Редактировать
Http408 = 408
Исходный код Редактировать
Http409 = 409
Исходный код Редактировать
Http410 = 410
Исходный код Редактировать
Http411 = 411
Исходный код Редактировать
Http412 = 412
Исходный код Редактировать
Http413 = 413
Исходный код Редактировать
Http414 = 414
Исходный код Редактировать
Http415 = 415
Исходный код Редактировать
Http416 = 416
Исходный код Редактировать
Http417 = 417
Исходный код Редактировать
Http418 = 418
Исходный код Редактировать
Http421 = 421
Исходный код Редактировать
Http422 = 422
Исходный код Редактировать
Http423 = 423
https://tools.ietf.org/html/rfc4918.html WebDAV, Раздел 11.3 Исходный код Редактировать
Http424 = 424
https://tools.ietf.org/html/rfc4918.html WebDAV, Раздел 11.3 Исходный код Редактировать
Http425 = 425
https://tools.ietf.org/html/rfc8470.html Ранние данные Исходный код Редактировать
Http426 = 426
Исходный код Редактировать
Http428 = 428
Исходный код Редактировать
Http429 = 429
Исходный код Редактировать
Http431 = 431
Исходный код Редактировать
Http451 = 451
Исходный код Редактировать
Http500 = 500
Исходный код Редактировать
Http501 = 501
Исходный код Редактировать
Http502 = 502
Исходный код Редактировать
Http503 = 503
Исходный код Редактировать
Http504 = 504
Исходный код Редактировать
Http505 = 505
Исходный код Редактировать
Http506 = 506
https://tools.ietf.org/html/rfc2295.html Переговоры по содержимому, Раздел 8.1 Исходный код Редактировать
Http507 = 507
https://tools.ietf.org/html/rfc4918.html WebDAV, Раздел 11.5 Исходный код Редактировать
Http508 = 508
https://tools.ietf.org/html/rfc5842.html WebDAV, Раздел 7.2 Исходный код Редактировать
Http510 = 510
https://tools.ietf.org/html/rfc2774.html Фреймворк расширений, Раздел 7 Исходный код Редактировать
Http511 = 511
https://tools.ietf.org/html/rfc6585.html Дополнительный код состояния, Раздел 6 Исходный код Редактировать
httpNewLine = "\r\n"
Исходный код Редактировать

Процедуры

func `$`(code: HttpCode): string {....raises: [], tags: [], forbids: [].}
Преобразует указанный HttpCode в HTTP-статус.

Пример:

doAssert($Http404 == "404 Not Found")
Исходный код Редактировать
func `$`(headers: HttpHeaders): string {.inline, ...raises: [], tags: [],
    forbids: [].}
Исходный код Редактировать
func `==`(a, b: HttpCode): bool {.borrow, ...raises: [], tags: [], forbids: [].}
Исходный код Редактировать
func `==`(protocol: tuple[orig: string, major, minor: int]; ver: HttpVersion): bool {.
    ...raises: [], tags: [], forbids: [].}
Исходный код Редактировать
func `[]`(headers: HttpHeaders; key: string): HttpHeaderValues {.
    ...raises: [KeyError], tags: [], forbids: [].}

Возвращает значения, связанные с заданным key. Если возвращаемые значения передаются процедуре, ожидающей string, то выбирается первое значение. Если значений, связанных с ключом, нет, то генерируется исключение.

Для доступа к нескольким значениям одного ключа используйте перегруженную процедуру [] ниже, или для получения всех значений обратитесь напрямую к полю table.

Исходный код Редактировать
func `[]`(headers: HttpHeaders; key: string; i: int): string {.
    ...raises: [KeyError], tags: [], forbids: [].}
Возвращает i-е значение, связанное с заданным ключом. Если значений, связанных с ключом, нет, или i-е значение не существует, генерируется исключение. Исходный код Редактировать
proc `[]=`(headers: HttpHeaders; key, value: string) {....raises: [], tags: [],
    forbids: [].}
Устанавливает записи заголовка, связанные с key, в указанное значение. Заменяет все существующие значения. Исходный код Редактировать
proc `[]=`(headers: HttpHeaders; key: string; value: seq[string]) {....raises: [],
    tags: [], forbids: [].}
Устанавливает записи заголовка, связанные с key, в указанный список значений. Заменяет все существующие значения. Если value пусто, то удаляет записи заголовка, связанные с key. Исходный код Редактировать
proc add(headers: HttpHeaders; key, value: string) {....raises: [KeyError],
    tags: [], forbids: [].}
Добавляет указанное значение к указанному ключу. Добавляет к существующим значениям, связанным с ключом. Исходный код Редактировать
proc clear(headers: HttpHeaders) {.inline, ...raises: [], tags: [], forbids: [].}
Исходный код Редактировать
func contains(methods: set[HttpMethod]; x: string): bool {....raises: [ValueError],
    tags: [], forbids: [].}
Исходный код Редактировать
func contains(values: HttpHeaderValues; value: string): bool {....raises: [],
    tags: [], forbids: [].}
Определяет, является ли value одним из значений внутри values. Сравнение выполняется без учета регистра. Исходный код Редактировать
proc del(headers: HttpHeaders; key: string) {....raises: [], tags: [], forbids: [].}
Удаляет записи заголовка, связанные с key Исходный код Редактировать
func getOrDefault(headers: HttpHeaders; key: string;
                  default = @[""].HttpHeaderValues): HttpHeaderValues {.
    ...raises: [KeyError], tags: [], forbids: [].}
Возвращает значения, связанные с заданным key. Если значений, связанных с ключом, нет, то возвращается default . Исходный код Редактировать
func hasKey(headers: HttpHeaders; key: string): bool {....raises: [], tags: [],
    forbids: [].}
Исходный код Редактировать
func is1xx(code: HttpCode): bool {.inline, ...raises: [], tags: [], forbids: [].}
Определяет, является ли code кодом HTTP-статуса 1xx.

Пример:

doAssert is1xx(HttpCode(103))
Исходный код Редактировать
func is2xx(code: HttpCode): bool {.inline, ...raises: [], tags: [], forbids: [].}
Определяет, является ли code кодом HTTP-статуса 2xx. Исходный код Редактировать
func is3xx(code: HttpCode): bool {.inline, ...raises: [], tags: [], forbids: [].}
Определяет, является ли code кодом HTTP-статуса 3xx. Исходный код Редактировать
func is4xx(code: HttpCode): bool {.inline, ...raises: [], tags: [], forbids: [].}
Определяет, является ли code кодом HTTP-статуса 4xx. Исходный код Редактировать
func is5xx(code: HttpCode): bool {.inline, ...raises: [], tags: [], forbids: [].}
Определяет, является ли code кодом HTTP-статуса 5xx. Исходный код Редактировать
func len(headers: HttpHeaders): int {.inline, ...raises: [], tags: [], forbids: [].}
Исходный код Редактировать
func newHttpHeaders(keyValuePairs: openArray[tuple[key: string, val: string]];
                    titleCase = false): HttpHeaders {....raises: [KeyError],
    tags: [], forbids: [].}
Возвращает новый объект HttpHeaders из массива. Если titleCase установлено в true, заголовки передаются серверу в верхнем регистре (например, "Content-Length") Исходный код Редактировать
func newHttpHeaders(titleCase = false): HttpHeaders {....raises: [], tags: [],
    forbids: [].}
Возвращает новый объект HttpHeaders . Если titleCase установлено в true, заголовки передаются серверу в верхнем регистре (например, "Content-Length") Исходный код Редактировать
func parseHeader(line: string): tuple[key: string, value: seq[string]] {.
    ...raises: [], tags: [], forbids: [].}

Разбирает отдельную строку HTTP-заголовка в пары ключ-значение.

Используется asynchttpserver и httpclient внутри и не должна использоваться вами.

Исходный код Редактировать
func toCaseInsensitive(headers: HttpHeaders; s: string): string {.inline,
    ...raises: [], tags: [], forbids: [].}
Только для внутреннего использования. Не используйте. Исходный код Редактировать

Итераторы

iterator pairs(headers: HttpHeaders): tuple[key, value: string] {....raises: [],
    tags: [], forbids: [].}
Возвращает каждую пару ключ-значение. Исходный код Редактировать

Конвертеры

converter toString(values: HttpHeaderValues): string {....raises: [], tags: [],
    forbids: [].}
Исходный код Редактировать

© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/httpcore.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API