הודעה שמייצגת גוף HTTP שרירותי. צריך להשתמש בו רק בפורמטים של מטען ייעודי (payload) שלא ניתן לייצג כ-JSON, למשל קובץ בינארי גולמי או דף HTML.
ניתן להשתמש בהודעה הזו גם ב-methods של API בסטרימינג וגם ב-methods ללא סטרימינג בבקשה וגם בתשובה.
אפשר להשתמש בשדה הזה כשדה בקשה ברמה העליונה. הוא נוח אם רוצים לחלץ פרמטרים מכתובת ה-URL או מתבנית ה-HTTP אל שדות הבקשה, וגם לקבל גישה לגוף ה-HTTP הגולמי.
דוגמה:
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 |
ערך הכותרת Content-Type ב-HTTP שמציין את סוג התוכן של הגוף. |
data |
גוף הבקשה/תשובה של ה-HTTP בתור בינארי גולמי. מחרוזת בקידוד base64. |
extensions[] |
מטא-נתונים של תגובה ספציפית לאפליקציה. יש להגדיר את הערך בתגובה הראשונה לממשקי API בסטרימינג. אובייקט שמכיל שדות מסוג שרירותי. שדה נוסף |