HttpBody

यह मैसेज एक आर्बिट्ररी एचटीटीपी काेड दिखाता है. इसका इस्तेमाल सिर्फ़ पेलोड फ़ॉर्मैट के लिए किया जाना चाहिए, जिसे मूल बाइनरी या एचटीएमएल पेज जैसे जेएसओएन के रूप में नहीं दिखाया जा सकता.

इस मैसेज का इस्तेमाल अनुरोध और जवाब में एपीआई के स्ट्रीमिंग और बिना स्ट्रीमिंग वाले दाेनाें तरीकों में किया जा सकता है.

इसका इस्तेमाल टॉप-लेवल के अनुरोध फ़ील्ड के रूप में किया जा सकता है. अगर कोई व्यक्ति यूआरएल या एचटीटीपी टेम्प्लेट से पैरामीटर को अनुरोध फ़ील्ड में लाना और मूल एचटीटीपी के मुख्य भाग का इस्तेमाल करना चाहता है, ताे इसके लिए भी यह अच्छा विकल्प है.

उदाहरण:

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);
}

स्ट्रीमिंग के इस प्रकार का इस्तेमाल सिर्फ़ तब बदलता है जब अनुरोध और जवाब के मुख्य में बदलाव हाेता है. बाकी सभी सुविधाएं वैसे ही काम करती हैं.

जेएसओएन के काेड में दिखाना
{
  "contentType": string,
  "data": string,
  "extensions": [
    {
      "@type": string,
      field1: ...,
      ...
    }
  ]
}
फ़ील्ड
contentType

string

एचटीटीपी कॉन्टेंट टाइप हेडर वैल्यू, जो मुख्य भाग के कॉन्टेंट टाइप के बारे में बताती है.

data

string (bytes format)

रॉ बाइनरी के तौर पर एचटीटीपी अनुरोध/जवाब का मुख्य हिस्सा.

base64 कोड में बदली गई स्ट्रिंग.

extensions[]

object

ऐप्लिकेशन के जवाब का खास मेटाडेटा. स्ट्रीमिंग एपीआई के लिए पहले जवाब में सेट किया जाना चाहिए.

ऐसा ऑब्जेक्ट जिसमें आर्बिट्रेरी टाइप के फ़ील्ड शामिल होते हैं. अतिरिक्त फ़ील्ड "@type" में, टाइप की पहचान करने वाला यूआरआई होता है. उदाहरण: { "id": 1234, "@type": "types.example.com/standard/id" }.