Hızlı Başlangıç: Bing Resim Arama REST API'sini ve Node.js kullanarak görüntü arama

Uyarı

30 Ekim 2020'de Bing Arama API'leri Azure yapay zeka hizmetlerinden Bing Arama Hizmetlerine taşındı. Bu belgeler yalnızca başvuru için sağlanır. Güncelleştirilmiş belgeler için Bing arama API'sinin belgelerine bakın. Bing araması için yeni Azure kaynakları oluşturma yönergeleri için bkz. Azure Market aracılığıyla Bing Arama kaynağı oluşturma.

Bing Resim Arama API'sine arama istekleri göndermeyi öğrenmek için bu hızlı başlangıcı kullanın. Bu JavaScript uygulaması API'ye bir arama sorgusu gönderir ve sonuçlarda ilk görüntünün URL'sini görüntüler. Bu uygulama JavaScript ile yazılmış olsa da, API çoğu programlama diliyle uyumlu bir RESTful web hizmetidir.

Önkoşullar

Daha fazla bilgi için bkz. Azure AI hizmetleri fiyatlandırması - Bing Arama API.

Uygulamayı oluşturma ve başlatma

  1. Sık kullandığınız IDE veya düzenleyicide yeni bir JavaScript dosyası oluşturun ve katılık ile HTTPS gereksinimlerini ayarlayın.

    'use strict';
    let https = require('https');
    
  2. API uç noktası, görüntü API’si arama yolu, abonelik anahtarınız ve arama teriminiz için değişkenler oluşturun. içinhost, aşağıdaki kodda genel uç noktayı kullanabilir veya kaynağınız için Azure portal görüntülenen özel alt etki alanı uç noktasını kullanabilirsiniz.

    let subscriptionKey = 'enter key here';
    let host = 'api.cognitive.microsoft.com';
    let path = '/bing/v7.0/images/search';
    let term = 'tropical ocean';
    

Arama isteği ve sorgu oluşturun.

  1. API isteğine yönelik bir arama URL’sini biçimlendirmek için son adımdaki değişkenleri kullanın. API'ye göndermeden önce arama teriminizi URL ile kodlayın.

    let request_params = {
        method : 'GET',
        hostname : host,
        path : path + '?q=' + encodeURIComponent(search),
        headers : {
        'Ocp-Apim-Subscription-Key' : subscriptionKey,
        }
    };
    
  2. API’ye sorgunuzu göndermek için istek kitaplığını kullanın.

    let req = https.request(request_params, response_handler);
    req.end();
    

Yanıtı işleme ve ayrıştırma

  1. http çağrısını responseparametre olarak alan adlı response_handler bir işlev tanımlayın.

  2. Bu işlevin içinde JSON yanıtının gövdesini içerecek bir değişken tanımlayın.

    let response_handler = function (response) {
        let body = '';
    };
    
  3. Bayrağı çağrıldığında yanıtın gövdesini data depolayın.

    response.on('data', function (d) {
        body += d;
    });
    
  4. Bir end bayrak işaretlendiğinde JSON yanıtından ilk sonucu alın. Döndürülen toplam görüntü sayısıyla birlikte ilk görüntünün URL'sini yazdırın.

    response.on('end', function () {
        let firstImageResult = imageResults.value[0];
        console.log(`Image result count: ${imageResults.value.length}`);
        console.log(`First image thumbnail url: ${firstImageResult.thumbnailUrl}`);
        console.log(`First image web search url: ${firstImageResult.webSearchUrl}`);
     });
    

Örnek JSON yanıtı

Bing Resim Arama API'sinden yanıtlar JSON olarak döndürülür. Bu örnek yanıt, tek bir sonuç göstermek için kısaltıldı.

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

Sonraki adımlar

Ayrıca bkz.