HttpBody

Diese Nachricht repräsentiert einen beliebigen HTTP-Text. Sie sollte nur für Payload-Formate verwendet werden, die nicht als JSON dargestellt werden können, z. B. binäre Rohdaten oder eine HTML-Seite.

Diese Nachricht kann sowohl für Streaming- als auch Nicht-Streaming-API-Methoden in der Anfrage sowie in der Antwort verwendet werden.

Diese Nachricht kann als übergeordnetes Anfragefeld verwendet werden. Das ist praktisch, wenn du Parameter aus der URL- oder HTTP-Vorlage in die Anfragefelder extrahierst und auch auf die Rohdaten des HTTP-Hauptteils zugreifen möchtest.

Beispiel:

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);
}

Beispiel mit Streaming-Methoden:

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

Durch die Verwendung dieses Typs wird nur die Art und Weise geändert, wie der Anfrage- und Antwort-Nachrichtenteil gehandhabt wird. Alle anderen Funktionen bleiben unverändert.

JSON-Darstellung
{
  "contentType": string,
  "data": string,
  "extensions": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
Felder
contentType

string

Der HTTP Content-Type-Headerwert, der den Inhaltstyp des Textes angibt.

data

string (bytes format)

Der HTTP-Anfrage-/Antworttext als Rohbinärdatei.

Ein base64-codierter String

extensions[]

object

Anwendungsspezifische Antwortmetadaten. Sie müssen in der ersten Antwort für Streaming-APIs festgelegt werden.

Ein Objekt mit Feldern eines beliebigen Typs. Ein zusätzliches Feld "@type" enthält einen URI zur Identifizierung des Typs. Beispiel: { "id": 1234, "@type": "types.example.com/standard/id" }.