Démarrage rapide : Envoyer une requête de recherche à l’API REST Recherche d’entités Bing en C#
Avertissement
Le 30 octobre 2020, les API de recherche Bing sont passées des services Azure AI aux services de recherche Bing. Cette documentation est fournie à des fins de référence uniquement. Pour accéder à la documentation mise à jour, consultez la documentation de l’API Recherche Bing. Pour obtenir des instructions sur la création de nouvelles ressources Azure pour Recherche Bing, consultez Créer une ressource Recherche Bing à l’aide de Place de marché Azure.
Utilisez ce guide de démarrage rapide pour effectuer votre premier appel à l’API Recherche d’entités Bing et voir la réponse JSON. Cette application simple en C# envoie une requête de recherche d’actualités à l’API et affiche ensuite la réponse. Le code source de cette application est disponible sur GitHub.
Bien que cette application soit écrite en C#, l’API est un service web RESTful compatible avec la plupart des langages de programmation.
Prérequis
- N’importe quelle édition de Visual Studio 2017 ou ultérieure.
- Ou, si vous utilisez Linux ou MacOS, vous pouvez suivre ce guide de démarrage rapide avec Visual Studio Code et .NET Core
- Compte Azure gratuit
Créer une ressource Azure
Commencez à utiliser l’API Recherche d’entités Bing en créant une des ressources Azure suivantes.
Ressource Recherche d’entités Bing
- Disponible via le portail Azure jusqu’à ce que vous supprimiez la ressource.
- Utilisez le niveau tarifaire Gratuit pour tester le service, puis effectuez par la suite une mise à niveau vers un niveau payant pour la production.
- L’API Recherche d’entités Bing est aussi proposée à certains niveaux de la ressource Recherche Bing v7.
Ressource multiservice
- Disponible via le portail Azure jusqu’à ce que vous supprimiez la ressource.
- Utilisez la même clé et le même point de terminaison pour vos applications, sur plusieurs services Azure AI.
Créer et initialiser un projet
Créez une solution console en C# dans Visual Studio.
Ajoutez le package NuGet Newtonsoft.Json.
- Cliquez avec le bouton droit sur l’Explorateur de solutions.
- Sélectionnez Gérer les packages NuGet.
- Recherchez et sélectionnez Newtonsoft.Json, puis installez le package.
Ajoutez ensuite les espaces de noms suivants dans le fichier de code principal :
using Newtonsoft.Json; using System; using System.Net.Http; using System.Text;
Créez une classe, puis ajoutez des variables pour le point de terminaison de l’API, votre clé d’abonnement et la requête que vous souhaitez rechercher. Vous pouvez utiliser le point de terminaison global dans le code suivant, ou le point de terminaison de sous-domaine personnalisé affiché dans le portail Azure pour votre ressource.
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"; //... } }
Envoyer une requête et obtenir la réponse de l’API
Au sein de la classe, créez une fonction nommée
Search()
. Dans cette fonction, créez un objetHttpClient
et ajoutez votre clé d’abonnement dans l’en-têteOcp-Apim-Subscription-Key
.Construisez l’URI de votre requête en combinant l’hôte et le chemin. Ajoutez ensuite votre marché et encodez par URL votre requête.
Attendez
client.GetAsync()
pour obtenir une réponse HTTP, puis stockez la réponse JSON en attendantReadAsStringAsync()
.Mettez en forme la chaîne JSON avec
JsonConvert.DeserializeObject()
et imprimez-la sur la 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); }
Dans la méthode
Main()
de votre application, appelez la fonctionSearch()
.static void Main(string[] args) { Search(); Console.ReadLine(); }
Exemple de réponse JSON
Une réponse correcte est retournée au format JSON, comme dans l’exemple suivant :
{
"_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"
},
. . .
]
}
}