HttpBody

הודעה שמייצגת גוף 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

string

ערך הכותרת Content-Type ב-HTTP שמציין את סוג התוכן של הגוף.

data

string (bytes format)

גוף הבקשה/תשובה של ה-HTTP בתור בינארי גולמי.

מחרוזת בקידוד base64.

extensions[]

object

מטא-נתונים של תגובה ספציפית לאפליקציה. יש להגדיר את הערך בתגובה הראשונה לממשקי API בסטרימינג.

אובייקט שמכיל שדות מסוג שרירותי. שדה נוסף "@type" מכיל URI המזהה את הסוג. לדוגמה: { "id": 1234, "@type": "types.example.com/standard/id" }.