التشغيل السريع: إرسال طلب بحث إلى واجهة برمجة تطبيقات REST لـ Bing Entity Search باستخدام C#‎

تحذير

في 30 أكتوبر 2020، انتقلت واجهات برمجة التطبيقات بحث Bing من خدمات Azure الذكاء الاصطناعي إلى خدمات بحث Bing. تتوفر هذه الوثائق للرجوع إليها فحسب. للحصول على وثائق محدثة، راجع الوثائق الخاصة ببحث Bing API . للحصول على إرشادات حول إنشاء موارد Azure جديدة لبحث Bing، راجع إنشاء مورد Bing Search من خلال Azure Marketplace.

استخدم هذا التشغيل السريع لإجراء أول استدعاء تقوم به لـ Bing Entity Search API وعرض استجابة JSON. يرسل تطبيق بلغة C# البسيط هذا استعلام البحث عن الأخبار إلى API ويعرض الاستجابة. تتوفر التعليمات البرمجية المصدر لهذا التطبيق على GitHub.

على الرغم من أن هذا التطبيق مكتوب بلغة C#، تُعد API خدمة مستندة إلى ويب RESTful ومتوافقة مع معظم لغات البرمجة.

المتطلبات الأساسية

أنشئ مورد Azure.

ابدأ باستخدام Entity Search API من خلال إنشاء أحد الموارد التالية لـAzure.

مورد Bing Entity Search

  • متوفر من خلال بوابة Azure حتي وقت حذفك للمورد.
  • استخدم مستوى التسعير المجاني لتجربة الخدمة، ورقِّها لاحقاً إلي المستوي المدفوع الخاص بعملية الإنتاج.
  • تُعرض Bing Entity Search في مستويات مدفوعة لموارد Bing Search v7.

مورد متعدد الخدمات

  • متوفر من خلال بوابة Azure حتي وقت حذفك للمورد.
  • استخدم نفس المفتاح ونقطة النهاية لتطبيقاتك، عبر خدمات Azure الذكاء الاصطناعي المتعددة.

إنشاء وتهيئة المشروع

  1. أنشئ حل وحدة تحكم C# جديداً في Visual Studio.

  2. إضافة حزمةNewtonsoft.Json NuGet.

    1. النقر بزر الماوس الأيمن فوق المشروع في مستكشف الحلول.
    2. تحديد إدارة حزم NuGet.
    3. البحث عن Newtonsoft.Json وتحديدها، وبعد ذلك تثبيت الحزمة.
  3. ثم إضافة مساحات الاسم التالية في ملف التعليمة البرمجية الرئيسي:

    using Newtonsoft.Json;
    using System;
    using System.Net.Http;
    using System.Text;
    
  4. إنشاء فئة جديدة، وإضافة متغيرات لنقطة نهاية API، ومفتاح اشتراكك، والاستعلام الذي تريد البحث عنه. يمكن استخدام نقطة النهاية العامة في التعليمات البرمجية التالية، أو استخدام نقطة نهاية المجال الفرعي المخصص المعروضة في مدخل Microsoft Azure لموردك.

    namespace EntitySearchSample
    {
        class Program
        {
            static string host = "https://api.bing.microsoft.com";
            static string path = "/v7.0/search";
    
            static string market = "en-US";
    
            // NOTE: Replace this example key with a valid subscription key.
            static string key = "ENTER YOUR KEY HERE";
    
            static string query = "italian restaurant near me";
        //...
        }
    }
    

إرسال طلب والحصول على استجابة API

  1. ضمن هذه الفئة، قم بإنشاء دالة تسمى Search(). ضمن هذه الدالة، قم بإنشاء HttpClient كائن جديد، وإضافة مفتاح الاشتراك إلى Ocp-Apim-Subscription-Key العنوان.

  2. يمكنك إنشاء URI لطلبك عن طريق دمج المضيف والمسار. يمكنك بعد ذلك إضافة السوق الخاص بك وترميز URL للاستعلام.

  3. يرجى الانتظار client.GetAsync() للحصول على استجابة HTTP، ثم تخزين استجابة JSON عن طريق الانتظار ReadAsStringAsync().

  4. تنسيق سلسلة JSON مع JsonConvert.DeserializeObject() وطباعته إلى وحدة التحكم.

    async static void Search()
    {
     //...
     HttpClient client = new HttpClient();
     client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", key);
    
     string uri = host + path + "?mkt=" + market + "&q=" + System.Net.WebUtility.UrlEncode(query);
    
     HttpResponseMessage response = await client.GetAsync(uri);
    
     string contentString = await response.Content.ReadAsStringAsync();
     dynamic parsedJson = JsonConvert.DeserializeObject(contentString);
     Console.WriteLine(parsedJson);
    }
    
  5. في Main() أسلوب تطبيقك، يمكنك استدعاء الدالة Search().

    static void Main(string[] args)
    {
        Search();
        Console.ReadLine();
    }
    

مثال على استجابة JSON

يتم إرجاع استجابة ناجحة في JSON كما هو موضح في المثال التالي:

{
  "_type": "SearchResponse",
  "queryContext": {
    "originalQuery": "italian restaurant near me",
    "askUserForLocation": true
  },
  "places": {
    "value": [
      {
        "_type": "LocalBusiness",
        "webSearchUrl": "https://www.bing.com/search?q=sinful+bakery&filters=local...",
        "name": "Liberty's Delightful Sinful Bakery & Cafe",
        "url": "https://www.contoso.com/",
        "entityPresentationInfo": {
          "entityScenario": "ListItem",
          "entityTypeHints": [
            "Place",
            "LocalBusiness"
          ]
        },
        "address": {
          "addressLocality": "Seattle",
          "addressRegion": "WA",
          "postalCode": "98112",
          "addressCountry": "US",
          "neighborhood": "Madison Park"
        },
        "telephone": "(800) 555-1212"
      },

      . . .
      {
        "_type": "Restaurant",
        "webSearchUrl": "https://www.bing.com/search?q=Pickles+and+Preserves...",
        "name": "Munson's Pickles and Preserves Farm",
        "url": "https://www.princi.com/",
        "entityPresentationInfo": {
          "entityScenario": "ListItem",
          "entityTypeHints": [
            "Place",
            "LocalBusiness",
            "Restaurant"
          ]
        },
        "address": {
          "addressLocality": "Seattle",
          "addressRegion": "WA",
          "postalCode": "98101",
          "addressCountry": "US",
          "neighborhood": "Capitol Hill"
        },
        "telephone": "(800) 555-1212"
      },
      
      . . .
    ]
  }
}

الخطوات التالية