Сообщение, представляющее произвольное тело 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 | Значение заголовка HTTP Content-Type, указывающее тип содержимого тела. |
data | Тело HTTP-запроса/ответа в виде необработанного двоичного файла. Строка в кодировке base64. |
extensions[] | Метаданные ответа конкретного приложения. Должен быть установлен в первом ответе для потоковых API. Объект, содержащий поля произвольного типа. Дополнительное поле |