Атрибут content_length
Атрибут content_length принадлежит классу Response и хранит длину тела HTTP-ответа в байтах. Значение атрибута соответствует заголовку Content-Length, который сообщает клиенту размер передаваемых данных. Атрибут принимает целое число или значение None, если длина ещё не определена.
При формировании ответа Bottle автоматически вычисляет и устанавливает content_length на основе тела ответа, если значение не задано вручную. Явное указание длины бывает полезно при отдаче потоковых данных или когда тело ответа формируется частями.
Синтаксис
response.content_length
Пример
Давайте создадим простой маршрут и посмотрим, чему равен атрибут content_length после возврата строки:
from bottle import Bottle, response
app = Bottle()
@app.route('/')
def index():
response.content_type = 'text/plain'
return 'hello'
app.run(host='localhost', port=8080)
При обращении к адресу / Bottle автоматически установит длину тела ответа, равную 5 байтам. Значение атрибута будет следующим:
5
Пример
Давайте установим атрибут content_length вручную и вернём ответ с заданной длиной:
from bottle import Bottle, response
app = Bottle()
@app.route('/data')
def data():
response.content_type = 'text/plain'
response.content_length = 5
return 'abcde'
app.run(host='localhost', port=8080)
Клиент получит заголовок Content-Length: 5, а значение атрибута будет равно:
5
Пример
Давайте проверим значение атрибута до формирования ответа. По умолчанию оно равно None:
from bottle import Bottle, response
app = Bottle()
@app.route('/check')
def check():
res = response.content_length
return 'content_length: ' + str(res)
app.run(host='localhost', port=8080)
Результат выполнения кода для адреса /check:
content_length: None
Смотрите также
-
класс
Response,
который описывает HTTP-ответ в Bottle -
атрибут
content_type,
который хранит MIME-тип тела ответа -
атрибут
body,
который хранит тело ответа -
атрибут
headers,
который хранит заголовки ответа