Komunikat dotyczący dowolnej treści HTTP. Powinien być używany wyłącznie w przypadku formatów ładunku, których nie da się zapisać jako JSON, takich jak pliki binarne RAW lub strony HTML.
Komunikat może być używany w żądaniu oraz w odpowiedzi zarówno w strumieniowych, jak i niestrumieniowych metodach API.
Może służyć jako pole żądania najwyższego poziomu, co jest wygodne, gdy chcesz wyodrębnić parametry z szablonu URL lub HTTP i użyć ich w polach żądania oraz gdy potrzebujesz dostępu do treści HTTP w formacie RAW.
Przykład:
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);
}
Przykład z metodami strumieniowymi:
service CaldavService {
rpc GetCalendar(stream google.api.HttpBody)
returns (stream google.api.HttpBody);
rpc UpdateCalendar(stream google.api.HttpBody)
returns (stream google.api.HttpBody);
}
Użycie tego typu treści zmienia tylko sposób obsługi treści żądania i odpowiedzi – pozostałe funkcje działają bez zmian.
Zapis JSON | |
---|---|
{ "contentType": string, "data": string, "extensions": [ { "@type": string, field1: ..., ... } ] } |
Pola | |
---|---|
contentType |
Wartość nagłówka HTTP Content-Type określająca typ treści treści. |
data |
Treść żądania/odpowiedzi HTTP w postaci nieprzetworzonego pliku binarnego. Ciąg zakodowany w formacie base64. |
extensions[] |
Metadane odpowiedzi aplikacji. W przypadku strumieniowych interfejsów API muszą być przesłane w pierwszej odpowiedzi. Obiekt zawierający pola dowolnego typu. Dodatkowe pole |