HttpBody

Se trata de un mensaje que representa un cuerpo HTTP arbitrario. Solo debe usarse en formatos de carga útil que no se pueden representar como JSON; por ejemplo, archivos binarios sin procesar o páginas HTML.

Este mensaje se puede usar tanto en los métodos de la API en streaming como en los que no lo son, y se puede incluir en la solicitud y en la respuesta.

También puede incluirse en las solicitudes como campo de nivel superior, lo que puede resultar útil si se quieren extraer parámetros de la URL o la plantilla HTTP para rellenar campos de la solicitud y, además, se quiere acceder al cuerpo HTTP sin procesar.

Ejemplo:

message GetResourceRequest {
  // A unique request id.
  string requestId = 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);

}

Ejemplo con métodos de streaming:

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

}

Al utilizar este tipo, solo cambia la forma en la que se gestionan los cuerpos de las solicitudes y las respuestas; no hay cambios en las demás funciones.

Representación JSON
{
  "contentType": string,
  "data": string,
  "extensions": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
Campos
contentType

string

El valor del encabezado HTTP Content-Type que especifica el tipo de contenido del cuerpo.

data

string (bytes format)

Cuerpo de la solicitud o respuesta HTTP como datos binarios sin formato.

Cadena codificada en base64.

extensions[]

object

Metadatos de respuestas específicos de la aplicación. Debe definirse en la primera respuesta de las APIs de streaming.

Un objeto que contiene campos de un tipo arbitrario. Un campo adicional "@type" contiene un URI que identifica el tipo. Ejemplo: { "id": 1234, "@type": "types.example.com/standard/id" }.