Compartilhar via


Início Rápido: Enviar uma solicitação de pesquisa para a API REST da Pesquisa de Entidade do Bing usando o C#

Aviso

Em 30 de outubro de 2020, as APIs de Pesquisa do Bing foram migradas dos serviços de IA do Azure para os Serviços de Pesquisa do Bing. Esta documentação é fornecida apenas para referência. Para obter a documentação atualizada, consulte a documentação da API de pesquisa do Bing. Para obter instruções sobre como criar novos recursos do Azure para a Pesquisa do Bing, consulte Criar um recurso de Pesquisa do Bing por meio do Azure Marketplace.

Use este início rápido para fazer sua primeira chamada à API de Pesquisa de Entidade do Bing e exibir a resposta JSON. Este aplicativo C# simples envia uma consulta de pesquisa de notícias para a API e exibe a resposta. O código-fonte desse aplicativo está disponível no GitHub.

Embora esse aplicativo seja escrito em C#, a API é um serviço Web RESTful compatível com a maioria das linguagens de programação.

Pré-requisitos

Criar um recurso do Azure

Comece a usar a API de Pesquisa de Entidade do Bing criando um dos recursos do Azure a seguir.

Recurso de Pesquisa de Entidade do Bing

  • Disponível por meio do portal do Azure até que você exclua o recurso.
  • Use o tipo de preço gratuito para experimentar o serviço e atualize mais tarde para uma camada paga para produção.
  • A Pesquisa de Entidade do Bing também é oferecida em camadas pagas do recurso Pesquisa do Bing v7.

Recurso de vários serviços

  • Disponível por meio do portal do Azure até que você exclua o recurso.
  • Use a mesma chave e ponto de extremidade para seus aplicativos nos vários serviços de IA do Azure.

Criar e inicializar um projeto

  1. Crie uma solução de console C# no Visual Studio.

  2. Adicione o pacote NuGet Newtonsoft.Json.

    1. Clique com o botão direito do mouse no projeto no Gerenciador de Soluções.
    2. Selecione Gerenciar Pacotes NuGet.
    3. Pesquise e selecione Newtonsoft.Json e, em seguida, instale o pacote.
  3. Então, adicione os seguintes namespaces no arquivo de código principal:

    using Newtonsoft.Json;
    using System;
    using System.Net.Http;
    using System.Text;
    
  4. Crie uma classe e adicione variáveis para o ponto de extremidade da API, sua chave de assinatura e a consulta que você deseja pesquisar. É possível usar o ponto de extremidade global no código a seguir ou o ponto de extremidade do subdomínio personalizado exibido no portal do Azure para seu recurso.

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

Enviar uma solicitação e obter a resposta da API

  1. Na classe, crie uma função chamada Search(). Dentro desta função, crie um objeto HttpClient e adicione a chave de assinatura ao cabeçalho Ocp-Apim-Subscription-Key.

  2. Construa o URI da sua solicitação combinando o host e o caminho. Em seguida, adicione o mercado e codifique a consulta como URL.

  3. Aguarde client.GetAsync() para obter uma resposta HTTP e, em seguida, armazene a resposta JSON aguardando ReadAsStringAsync().

  4. Formate a cadeia de caracteres JSON com JsonConvert.DeserializeObject() e imprima-a no console.

    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. No método Main() do aplicativo, chame a função Search().

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

Resposta JSON de exemplo

Uma resposta com êxito é retornada em JSON, conforme mostrado no seguinte exemplo:

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

Próximas etapas