HttpBody

پیامی که یک بدنه HTTP دلخواه را نشان می‌دهد. فقط باید برای قالب‌های باری استفاده شود که نمی‌توانند به‌عنوان JSON نشان داده شوند، مانند باینری خام یا صفحه HTML.

این پیام را می توان هم در روش های پخش جریانی و هم در روش های غیر استریم API در درخواست و همچنین پاسخ استفاده کرد.

می توان از آن به عنوان یک فیلد درخواست سطح بالا استفاده کرد، که اگر بخواهید پارامترهایی را از 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 Content-Type که نوع محتوای بدنه را مشخص می کند.

data

string ( bytes format)

بدنه درخواست/پاسخ HTTP به صورت باینری خام.

رشته ای با کد base64.

extensions[]

object

فراداده پاسخ خاص برنامه باید در اولین پاسخ برای APIهای جریانی تنظیم شود.

یک شی حاوی فیلدهایی از نوع دلخواه. یک فیلد اضافی "@type" حاوی یک URI است که نوع را مشخص می کند. مثال: { "id": 1234, "@type": "types.example.com/standard/id" } .