Rychlý start: Odeslání žádosti o hledání do rozhraní REST API Bingu pro vyhledávání entit pomocí jazyka C#

Upozornění

30. října 2020 se rozhraní API Vyhledávání Bingu přesunula ze služeb Azure AI na Vyhledávání Bingu Services. Tato dokumentace je k dispozici pouze pro referenci. Aktualizovanou dokumentaci najdete v dokumentaci k rozhraní API bingu pro vyhledávání. Pokyny k vytváření nových prostředků Azure pro vyhledávání Bingem najdete v tématu Vytvoření prostředku Vyhledávání Bingu prostřednictvím Azure Marketplace.

Pomocí tohoto rychlého startu provedete první volání rozhraní API Bingu pro vyhledávání entit a zobrazíte odpověď JSON. Tato jednoduchá aplikace jazyka C# odešle do rozhraní API dotaz pro vyhledávání zpráv a zobrazí odpověď. Zdrojový kód této aplikace je k dispozici na GitHubu.

I když je tato aplikace napsaná v jazyce C#, rozhraní API je webová služba RESTful kompatibilní s většinou programovacích jazyků.

Požadavky

Vytvoření prostředku Azure

Začněte používat rozhraní API Bingu pro vyhledávání entit vytvořením jednoho z následujících prostředků Azure.

Prostředek Vyhledávání entit Bingu

  • Dostupné prostřednictvím Azure Portal, dokud prostředek neodstraníte.
  • K vyzkoušení služby použijte bezplatnou cenovou úroveň a později upgradujte na placenou úroveň pro produkční prostředí.
  • Vyhledávání entit Bingu je také nabízeno na placených úrovních prostředku Vyhledávání Bingu v7.

Prostředek s více službami

  • Dostupné prostřednictvím Azure Portal, dokud prostředek neodstraníte.
  • Pro aplikace používejte stejný klíč a koncový bod napříč několika službami Azure AI.

Vytvoření a inicializace projektu

  1. Vytvořte nové řešení konzoly jazyka C# v sadě Visual Studio.

  2. Přidejte balíček NuGet Newtonsoft.Json .

    1. Klikněte pravým tlačítkem na projekt v Průzkumník řešení.
    2. Vyberte Spravovat balíčky NuGet.
    3. Vyhledejte a vyberte Newtonsoft.Json a pak balíček nainstalujte.
  3. Pak do hlavního souboru kódu přidejte následující obory názvů:

    using Newtonsoft.Json;
    using System;
    using System.Net.Http;
    using System.Text;
    
  4. Vytvořte novou třídu a přidejte proměnné pro koncový bod rozhraní API, klíč předplatného a dotaz, který chcete prohledávat. Globální koncový bod můžete použít v následujícím kódu nebo vlastní koncový bod subdomény zobrazený v Azure Portal pro váš prostředek.

    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";
        //...
        }
    }
    

Odeslání požadavku a získání odpovědi rozhraní API

  1. V rámci třídy vytvořte funkci s názvem Search(). V rámci této funkce vytvořte nový HttpClient objekt a přidejte do záhlaví klíč předplatného Ocp-Apim-Subscription-Key .

  2. Vytvořte identifikátor URI pro váš požadavek kombinací hostitele a cesty. Pak přidejte svůj trh a zakódujte svůj dotaz pomocí adresy URL.

  3. Počkejte client.GetAsync() na získání odpovědi HTTP a pak uložte odpověď JSON čekáním ReadAsStringAsync()na .

  4. Naformátujte řetězec JSON pomocí JsonConvert.DeserializeObject() a vytiskněte ho do konzoly.

    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() V metodě vaší aplikace zavolejte Search() funkci.

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

Příklad odpovědi JSON

Úspěšná odpověď se vrátí ve formátu JSON, jak je znázorněno v následujícím příkladu:

{
  "_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"
      },
      
      . . .
    ]
  }
}

Další kroky