Сжатие запросов к API

Протокол HTTPS предусматривает стандартное соглашение между клиентом и сервером о сжатии ответа сервера. Клиент добавляет в запрос заголовок Accept-Encoding с указанием поддерживаемых методов сжатия, и сервер может сжать ответ с помощью одного из алгоритмов. Наше API поддерживает стандартный алгоритм gzip по этому методу.

Но, к сожалению, этот метод не идеален. Во-первых, он позволяет сжимать только ответ, но не запрос. Во-вторых, многие клиентские библиотеки не поддерживают алгоритм bzip2 - более эффективный, чем gzip. Чтобы устранить эти недостатки, в нашем API возможно использование двух дополнительных параметров request_compression и response_compression.

Принцип использования

Если необходимо использовать сжатие передаваемых серверу API данных, необходимо в URL запроса передавать api_key и request_compression с одним из разрешённых алгоритмов сжатия. Все остальные параметры должны быть закодированы с помощью application/x-www-form-urlencoded, сжаты указанным в request_compression методом и переданы в теле POST запроса.

При необходимости использовать сжатие ответа необходимо передать дополнительный параметр response_compression, в котором указать желаемый алгоритм сжатия - gzip или bzip2. Если сервер сочтёт нужным, он сожмёт данные ответа указанным методом. Структура сжатых данных ответа будет соответствовать описанной в документации к API. При этом в случае сжатия протоколом gzip в ответе будет HTTPS-заголовок Content-Type: application/x-gzip, а в случае сжатия алгоритмом bzip2 в ответе будет HTTPS-заголовок Content-Type: application/x-bzip.

 

Параметры
response_compression Применяемое сжатие для ответа от сервера API. Возможные значения: bzip2, gzip.
request_compression Применяемое сжатие для тела запроса к серверу API. Возможные значения: bzip2, gzip.