ข้อความที่เป็นตัวแทนเนื้อหา 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 |
ค่าส่วนหัว HTTP Content-Type ที่ระบุประเภทเนื้อหาของส่วนเนื้อหา |
data |
เนื้อหาคำขอ/การตอบกลับ HTTP เป็นไบนารีดิบ สตริงที่เข้ารหัสฐาน 64 |
extensions[] |
ข้อมูลเมตาการตอบกลับเฉพาะแอปพลิเคชัน ต้องตั้งค่าในการตอบกลับครั้งแรกสำหรับ API สตรีมมิง ออบเจ็กต์ที่มีช่องประเภทที่กำหนดเอง ช่องเพิ่มเติม |