Démarrage rapide : Rechercher des images à l’aide de l’API REST Recherche d’images Bing et de 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 découvrir comment envoyer des demandes de recherche à l’API Recherche d’images Bing. Cette application C# envoie une requête de recherche à l’API et affiche l’URL de la première image dans les résultats. 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.
- Le framework Json.NET, disponible sous forme de package NuGet.
- Si vous utilisez Linux/MacOS, cette application peut être exécutée à l’aide de Mono.
Créer et initialiser un projet
Créez une solution de console nommée
BingSearchApisQuickStart
dans Visual Studio. Ensuite, ajoutez les espaces de noms suivants dans le fichier de code principal :using System; using System.Net; using System.IO; using System.Collections.Generic; using Newtonsoft.Json.Linq;
Créez des variables pour le point de terminaison d’API, votre clé d’abonnement et le terme de recherche. Pour
uriBase
, vous pouvez utiliser le point de terminaison global ci-dessous, ou le point de terminaison de sous-domaine personnalisé affiché dans le portail Azure pour votre ressource.//... namespace BingSearchApisQuickstart { class Program { // Replace the this string with your valid access key. const string subscriptionKey = "enter your key here"; const string uriBase = "https://api.cognitive.microsoft.com/bing/v7.0/images/search"; const string searchTerm = "tropical ocean"; //...
Créer une structure pour mettre en forme la réponse de Recherche d’images Bing
Définissez un struct SearchResult
pour contenir les résultats de recherche d’images et les informations d’en-tête JSON.
namespace BingSearchApisQuickstart
{
class Program
{
//...
struct SearchResult
{
public String jsonResult;
public Dictionary<String, String> relevantHeaders;
}
//...
Créer une méthode pour envoyer des requêtes de recherche
Créez une méthode nommée BingImageSearch
pour effectuer l’appel à l’API, puis définissez le type de retour sur le struct SearchResult
créé précédemment.
//...
namespace BingSearchApisQuickstart
{
//...
class Program
{
//...
static SearchResult BingImageSearch(string searchTerm)
{
}
//...
Créer et gérer une requête de recherche d’image
Dans la méthode BingImageSearch
, effectuez les étapes suivantes :
Construisez l’URI de la requête de recherche. Formatez le terme de recherche
SearchTerm
avant de l’ajouter à la chaîne.static SearchResult BingImageSearch(string SearchTerm){ var uriQuery = uriBase + "?q=" + Uri.EscapeDataString(SearchTerm); //...
Envoyez la demande web et obtenez la réponse dans une chaîne JSON.
WebRequest request = WebRequest.Create(uriQuery); request.Headers["Ocp-Apim-Subscription-Key"] = subscriptionKey; HttpWebResponse response = (HttpWebResponse)request.GetResponseAsync().Result; string json = new StreamReader(response.GetResponseStream()).ReadToEnd();
Créez l’objet résultat de la recherche, puis extrayez les en-têtes HTTP Bing. Retournez ensuite
searchResult
.// Create the result object for return var searchResult = new SearchResult() { jsonResult = json, relevantHeaders = new Dictionary<String, String>() }; // Extract Bing HTTP headers foreach (String header in response.Headers) { if (header.StartsWith("BingAPIs-") || header.StartsWith("X-MSEdge-")) searchResult.relevantHeaders[header] = response.Headers[header]; } return searchResult;
Traiter et afficher la réponse
Dans la méthode principale, appelez
BingImageSearch()
et stockez la réponse retournée. Désérialisez ensuite le contenu JSON dans un objet.SearchResult result = BingImageSearch(searchTerm); //deserialize the JSON response from the Bing Image Search API dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(result.jsonResult);
Obtenez la première image retournée à partir de
jsonObj
, puis imprimez le titre et une URL vers l’image.var firstJsonObj = jsonObj["value"][0]; Console.WriteLine("Title for the first image result: " + firstJsonObj["name"]+"\n"); //After running the application, copy the output URL into a browser to see the image. Console.WriteLine("URL for the first image result: " + firstJsonObj["webSearchUrl"]+"\n");
Exemple de réponse JSON
Les réponses de l’API Recherche d’images Bing sont retournées au format JSON. Cet exemple de réponse a été tronqué pour afficher un résultat unique.
{
"_type":"Images",
"instrumentation":{
"_type":"ResponseInstrumentation"
},
"readLink":"images\/search?q=tropical ocean",
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=tropical ocean&FORM=OIIARP",
"totalEstimatedMatches":842,
"nextOffset":47,
"value":[
{
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?view=detailv2&FORM=OIIRPO&q=tropical+ocean&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&simid=608027248313960152",
"name":"My Life in the Ocean | The greatest WordPress.com site in ...",
"thumbnailUrl":"https:\/\/tse3.mm.bing.net\/th?id=OIP.fmwSKKmKpmZtJiBDps1kLAHaEo&pid=Api",
"datePublished":"2017-11-03T08:51:00.0000000Z",
"contentUrl":"https:\/\/mylifeintheocean.files.wordpress.com\/2012\/11\/tropical-ocean-wallpaper-1920x12003.jpg",
"hostPageUrl":"https:\/\/mylifeintheocean.wordpress.com\/",
"contentSize":"897388 B",
"encodingFormat":"jpeg",
"hostPageDisplayUrl":"https:\/\/mylifeintheocean.wordpress.com",
"width":1920,
"height":1200,
"thumbnail":{
"width":474,
"height":296
},
"imageInsightsToken":"ccid_fmwSKKmK*mid_8607ACDACB243BDEA7E1EF78127DA931E680E3A5*simid_608027248313960152*thid_OIP.fmwSKKmKpmZtJiBDps1kLAHaEo",
"insightsMetadata":{
"recipeSourcesCount":0,
"bestRepresentativeQuery":{
"text":"Tropical Beaches Desktop Wallpaper",
"displayText":"Tropical Beaches Desktop Wallpaper",
"webSearchUrl":"https:\/\/www.bing.com\/images\/search?q=Tropical+Beaches+Desktop+Wallpaper&id=8607ACDACB243BDEA7E1EF78127DA931E680E3A5&FORM=IDBQDM"
},
"pagesIncludingCount":115,
"availableSizesCount":44
},
"imageId":"8607ACDACB243BDEA7E1EF78127DA931E680E3A5",
"accentColor":"0050B2"
}]
}