HttpBody

Pesan yang merepresentasikan bagian isi HTTP arbitrer. Pesan ini hanya boleh digunakan untuk format payload yang tidak dapat direpresentasikan sebagai JSON, seperti biner mentah atau halaman HTML.

Pesan ini dapat digunakan baik dalam metode API streaming maupun non-streaming pada permintaan dan juga pada respons.

Pesan ini dapat digunakan sebagai kolom permintaan tingkat atas, yang praktis jika seseorang ingin mengekstrak parameter dari template HTTP atau URL ke dalam kolom permintaan dan juga menginginkan akses ke isi HTTP mentah.

Contoh:

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

Contoh dengan metode 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);
}

Penggunaan jenis ini hanya mengubah cara penanganan isi permintaan dan respons; semua fitur lainnya tetap berfungsi tanpa perubahan.

Representasi JSON
{
  "contentType": string,
  "data": string,
  "extensions": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
Kolom
contentType

string

Nilai header Jenis Konten HTTP yang menentukan jenis konten pada bagian isi.

data

string (bytes format)

Isi permintaan/respons HTTP sebagai biner mentah.

String berenkode base64.

extensions[]

object

Metadata respons khusus aplikasi. Harus ditetapkan dalam respons pertama untuk API streaming.

Objek yang berisi kolom tipe arbitrer. Kolom tambahan "@type" berisi URI yang mengidentifikasi jenis. Contoh: { "id": 1234, "@type": "types.example.com/standard/id" }.