HttpBody

Сообщение, представляющее произвольное тело HTTP. Его следует использовать только для форматов полезных данных, которые не могут быть представлены в виде JSON, таких как необработанные двоичные файлы или HTML-страницы.

Это сообщение можно использовать как в потоковых, так и в непотоковых методах API в запросе, а также в ответе.

Его можно использовать как поле запроса верхнего уровня, что удобно, если нужно извлечь параметры из URL-адреса или шаблона HTTP в поля запроса, а также получить доступ к необработанному телу HTTP.

Пример:

message GetResourceRequest {
  // A unique request id.
  string request_id = 1;

  // The raw HTTP body is bound to this field.
  google.api.HttpBody http_body = 2;
}

service ResourceService {
  rpc GetResource(GetResourceRequest) returns (google.api.HttpBody);
  rpc UpdateResource(google.api.HttpBody) returns
  (google.protobuf.Empty);
}

Пример с потоковыми методами:

service CaldavService {
  rpc GetCalendar(stream google.api.HttpBody)
    returns (stream google.api.HttpBody);
  rpc UpdateCalendar(stream google.api.HttpBody)
    returns (stream google.api.HttpBody);
}

Использование этого типа изменяет только то, как обрабатываются тела запроса и ответа, все остальные функции будут продолжать работать без изменений.

Представление JSON
{
  "contentType": string,
  "data": string,
  "extensions": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
Поля
contentType

string

Значение заголовка HTTP Content-Type, указывающее тип содержимого тела.

data

string ( bytes format)

Тело HTTP-запроса/ответа в виде необработанного двоичного файла.

Строка в кодировке base64.

extensions[]

object

Метаданные ответа конкретного приложения. Должен быть установлен в первом ответе для потоковых API.

Объект, содержащий поля произвольного типа. Дополнительное поле "@type" содержит URI, идентифицирующий тип. Пример: { "id": 1234, "@type": "types.example.com/standard/id" } .