HttpBody

رسالة تمثل نص HTTP عشوائي. لا تستخدَم هذه الرسالة إلا مع تنسيقات البيانات الأساسية التي يتعذَّر تمثيلها بترميز JSON، مثل البيانات الثنائية الأولية أو صفحة HTML.

يمكن استخدام هذه الرسالة في طرق واجهة برمجة التطبيقات المستخدَمة في بث البيانات وغير المستخدَمة على حد سواء لإجراء الطلب والاستجابة أيضًا.

يمكن استخدام هذه الرسالة باعتبارها حقل عالي المستوى للطلب، والذي يعدّ مناسبًا لاستخراج معلمات من عنوان 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

قيمة العنوان "نوع محتوى HTTP" التي تحدد نوع محتوى النص.

data

string (bytes format)

نص طلب/استجابة HTTP كنص ثنائي أوّلي.

سلسلة بترميز base64.

extensions[]

object

البيانات الوصفية للاستجابة الخاصة بالتطبيق. يجب أن يتم تحديد هذه البيانات في الاستجابة الأولى لواجهات برمجة تطبيقات البث.

كائن يحتوي على حقول من نوع عشوائي يحتوي الحقل الإضافي "@type" على معرف موارد منتظم (URI) يحدّد النوع. مثال: { "id": 1234, "@type": "types.example.com/standard/id" }