HttpBody

ข้อความที่เป็นตัวแทนเนื้อหา HTTP ที่กำหนดเอง ควรใช้เป็นรูปแบบเปย์โหลดที่แสดงเป็น JSON ไม่ได้เท่านั้น เช่น ไฟล์ไบนารีข้อมูล RAW หรือหน้า HTML

ข้อความนี้ใช้ได้ทั้งในเมธอด API แบบสตรีมมิงและไม่ใช่สตรีมมิงในคำขอและในการตอบกลับ

ข้อความนี้ใช้เป็นช่องคำขอระดับบนสุดได้ ซึ่งจะสะดวกมากสำหรับผู้ที่ต้องการแยกพารามิเตอร์ออกจาก URL หรือเทมเพลต HTTP เพื่อใส่ลงในช่องคำขอและต้องการเข้าถึงเนื้อหา HTTP แบบไฟล์ข้อมูล RAW ด้วย

เช่น

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

string

ค่าส่วนหัว HTTP Content-Type ที่ระบุประเภทเนื้อหาของส่วนเนื้อหา

data

string (bytes format)

เนื้อหาคำขอ/การตอบกลับ HTTP เป็นไบนารีดิบ

สตริงที่เข้ารหัสฐาน 64

extensions[]

object

ข้อมูลเมตาการตอบกลับเฉพาะแอปพลิเคชัน ต้องตั้งค่าในการตอบกลับครั้งแรกสำหรับ API สตรีมมิง

ออบเจ็กต์ที่มีช่องประเภทที่กำหนดเอง ช่องเพิ่มเติม "@type" จะมี URI ที่ระบุประเภท ตัวอย่างเช่น { "id": 1234, "@type": "types.example.com/standard/id" }