Help us shape the future of Go! Take the 2026 Go Developer Survey

httpbody

package
v1.16.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 30, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Overview

Package httpbody — ЕДИНСТВЕННАЯ в дереве реализация потолка тела запроса.

Почему одна, а не по месту

Потолок состоит из ДВУХ слоёв, и второй забывают. Реализация, поставившая только ограничитель чтения, выглядит исполненной и пропускает запрос, объявивший гигантскую длину: отказ приходит после того, как тело прочитано, — то есть ровно тогда, когда экономить уже нечего. Пока реализаций несколько, различие между ними НЕ ВЫРАЖЕНО и потому не может покраснеть; первая же правка одной из них не доедет до остальных, и не доедет молча.

Замер, из-за которого пакет заведён: до него реализаций в дереве было ТРИ, и объявленную длину проверяла ОДНА.

Два слоя и почему нужны оба

  1. **объявленная длина сверх потолка** — отказ немедленный, ни одного байта тела не прочитано;
  2. **ограничитель чтения** — клиент вправе длину не объявлять (потоковая передача), и тогда единственное, что делает тело конечным, — обрыв чтения на потолке.

Первый слой без второго не ограничивает ничего: длину объявляет клиент. Второй без первого ограничивает память, но платит чтением.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Cap

func Cap(w http.ResponseWriter, r *http.Request, limit int64) bool

Cap ограничивает тело запроса потолком и отвечает, обязан ли вызывающий отказать НЕМЕДЛЕННО.

`true` означает: клиент объявил длину сверх потолка, тело не читалось, и вызывающий обязан отказать своей формой ответа. Форма отказа НЕ навязывается здесь намеренно — она разная у края, у вебхуков и у токен-эндпоинта, и сведение её к одной сломало бы чужие контракты ради опрятности.

`false` означает: тело обёрнуто ограничителем. Попытка прочитать больше потолка вернёт `*http.MaxBytesError`, и вызывающий вправе отличить её от прочих ошибок разбора.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL