Avvio rapido: Effettuare ricerche sul Web con l'API REST Ricerca Web Bing e Node.jsQuickstart: Search the web using the Bing Web Search REST API and Node.js

Usare questa guida introduttiva per eseguire la prima chiamata all'API Ricerca Web Bing e ricevere la risposta JSON.Use this quickstart to make your first call to the Bing Web Search API and receive the JSON response. Questa applicazione Node.js invia una richiesta di ricerca all'API e mostra la risposta.This Node.js application sends a search request to the API, and shows the response. L'applicazione è scritta in JavaScript, ma l'API è un servizio Web RESTful compatibile con la maggior parte dei linguaggi di programmazione.While this application is written in JavaScript, the API is a RESTful Web service compatible with most programming languages.

PrerequisitiPrerequisites

Prima di eseguire i passaggi illustrati in questa guida introduttiva, verificare di avere quanto segue:Here are a few things that you'll need before running this quickstart:

  • Node.js 6 o versione successivaNode.js 6 or later
  • Una chiave di sottoscrizioneA subscription key

Per questa guida introduttiva è necessario avere un account di Servizi cognitivi di Azure con le API di ricerca Bing.This quickstart requires an Azure Cognitive Services account with Bing Search APIs. Se non si dispone di un account, è possibile usare la versione di valutazione gratuita per ottenere una chiave di sottoscrizione.If you don't have an account, you can use the free trial to get a subscription key.

Creare un progetto e dichiarare i moduli necessariCreate a project and declare required modules

Creare un nuovo progetto Node.js nell'IDE o nell'editor preferito.Create a new Node.js project in your favorite IDE or editor. Copiare quindi il frammento di codice seguente nel progetto all'interno di un file denominato search.js.Then copy the code snippet below into your project in a file named search.js.

// Use this simple app to query the Bing Web Search API and get a JSON response.
// Usage: node search.js "your query".
const https = require('https')

Impostare la chiave di sottoscrizioneSet the subscription key

Questo frammento di codice usa la AZURE_SUBSCRIPTION_KEY variabile di ambiente per archiviare la chiave di sottoscrizione, in questo modo si evita l'esposizione accidentale delle chiavi quando viene distribuito il codice.This code snippet uses the AZURE_SUBSCRIPTION_KEY environment variable to store your subscription key, a good practice to prevent the accidental exposure of your keys when deploying code. Passare alla pagina Your APIs (Le tue API) per cercare la chiave di sottoscrizione.Go to the Your APIs page to look up your subscription key.

Se non si ha familiarità con le variabili di ambiente o se si desidera eseguire l'app al massimo della velocità, è possibile sostituire process.env['AZURE_SUBSCRIPTION_KEY'] con la chiave di sottoscrizione impostata come stringa.If you're unfamiliar with using environment variables, or looking to run this app as fast as possible, then you can replace process.env['AZURE_SUBSCRIPTION_KEY'] with your subscription key set as a string.

const SUBSCRIPTION_KEY = process.env['AZURE_SUBSCRIPTION_KEY']
if (!SUBSCRIPTION_KEY) {
  throw new Error('AZURE_SUBSCRIPTION_KEY is not set.')
}

Creare una funzione per effettuare la richiestaCreate a function to make the request

Questa funzione effettuerà una richiesta GET protetta, salvando la query di ricerca come parametro di query nel percorso.This function will make a secure GET request, saving the search query as a query parameter in the path. encodeURIComponent viene usato per eseguire l'escape di caratteri non validi e la chiave di sottoscrizione viene passata in un'intestazione.encodeURIComponent is used to escape invalid characters, and the subscription key is passed in a header. Il callback riceve una risposta che sottoscrive l'dataevento per aggregare il corpo JSON, l'error evento per registrare eventuali problemi e l'end evento per sapere quando il messaggio deve essere considerato completo.The callback receives a response that subscribes to the data event to aggregate the JSON body, the error event to log any issues, and the end event to know when the message should be considered complete. Una volta completato, l'app stamperà le intestazioni interessanti e il corpo del messaggio.When complete, the app will print the interesting headers and message body. È possibile usare i colori e impostare la profondità in base alle proprie preferenze, una profondità di 1 offre un riepilogo utile della risposta.You can play with the colors and set the depth to suit your preference, a depth of 1 gives a nice summary of the response.

function bingWebSearch(query) {
  https.get({
    hostname: 'api.cognitive.microsoft.com',
    path:     '/bing/v7.0/search?q=' + encodeURIComponent(query),
    headers:  { 'Ocp-Apim-Subscription-Key': SUBSCRIPTION_KEY },
  }, res => {
    let body = ''
    res.on('data', part => body += part)
    res.on('end', () => {
      for (var header in res.headers) {
        if (header.startsWith("bingapis-") || header.startsWith("x-msedge-")) {
          console.log(header + ": " + res.headers[header])
        }
      }
      console.log('\nJSON Response:\n')
      console.dir(JSON.parse(body), { colors: false, depth: null })
    })
    res.on('error', e => {
      console.log('Error: ' + e.message)
      throw e
    })
  })
}

Impostare la queryGet the query

Esaminiamo gli argomenti del programma per trovare la query.Let's look at the program's arguments to find the query. Il primo argomento è il percorso al nodo, il secondo è il nome file e il terzo è la query.The first argument is the path to node, the second is our filename, and the third is your query. Se la query è assente, viene utilizzata una query predefinita dei "Servizi cognitivi Microsoft".If the query is absent, a default query of "Microsoft Cognitive Services" is used.

const query = process.argv[2] || 'Microsoft Cognitive Services'

Eseguire una richiesta e stampare la rispostaMake a request and print the response

E ora che tutto è definito, possiamo chiamare la funzione!And now that everything is defined, let's call our function!

bingWebSearch(query)

Combinare tutti gli elementiPut it all together

L'ultimo passaggio consiste nell'eseguire il codice: node search.js "<your query>".The last step is to run your code: node search.js "<your query>".

Se si vuole confrontare il proprio codice con quello già disponibile, ecco il programma completo:If you'd like to compare your code with ours, here's the complete program:

const https = require('https')
const SUBSCRIPTION_KEY = process.env['AZURE_SUBSCRIPTION_KEY']
if (!SUBSCRIPTION_KEY) {
  throw new Error('Missing the AZURE_SUBSCRIPTION_KEY environment variable')
}
function bingWebSearch(query) {
  https.get({
    hostname: 'api.cognitive.microsoft.com',
    path:     '/bing/v7.0/search?q=' + encodeURIComponent(query),
    headers:  { 'Ocp-Apim-Subscription-Key': SUBSCRIPTION_KEY },
  }, res => {
    let body = ''
    res.on('data', part => body += part)
    res.on('end', () => {
      for (var header in res.headers) {
        if (header.startsWith("bingapis-") || header.startsWith("x-msedge-")) {
          console.log(header + ": " + res.headers[header])
        }
      }
      console.log('\nJSON Response:\n')
      console.dir(JSON.parse(body), { colors: false, depth: null })
    })
    res.on('error', e => {
      console.log('Error: ' + e.message)
      throw e
    })
  })
}
const query = process.argv[2] || 'Microsoft Cognitive Services'
bingWebSearch(query)

Risposta di esempioSample response

Le risposte dell'API Ricerca Web Bing vengono restituite in formato JSON.Responses from the Bing Web Search API are returned as JSON. Questa risposta di esempio è stata troncata in modo da visualizzare un singolo risultato.This sample response has been truncated to show a single result.

{
  "_type": "SearchResponse",
  "queryContext": {
    "originalQuery": "Microsoft Cognitive Services"
  },
  "webPages": {
    "webSearchUrl": "https://www.bing.com/search?q=Microsoft+cognitive+services",
    "totalEstimatedMatches": 22300000,
    "value": [
      {
        "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.0",
        "name": "Microsoft Cognitive Services",
        "url": "https://www.microsoft.com/cognitive-services",
        "displayUrl": "https://www.microsoft.com/cognitive-services",
        "snippet": "Knock down barriers between you and your ideas. Enable natural and contextual interaction with tools that augment users' experiences via the power of machine-based AI. Plug them in and bring your ideas to life.",
        "deepLinks": [
          {
            "name": "Face API",
            "url": "https://azure.microsoft.com/services/cognitive-services/face/",
            "snippet": "Add facial recognition to your applications to detect, identify, and verify faces using a Face API from Microsoft Azure. ... Cognitive Services; Face API;"
          },
          {
            "name": "Text Analytics",
            "url": "https://azure.microsoft.com/services/cognitive-services/text-analytics/",
            "snippet": "Cognitive Services; Text Analytics API; Text Analytics API . Detect sentiment, ... you agree that Microsoft may store it and use it to improve Microsoft services, ..."
          },
          {
            "name": "Computer Vision API",
            "url": "https://azure.microsoft.com/services/cognitive-services/computer-vision/",
            "snippet": "Extract the data you need from images using optical character recognition and image analytics with Computer Vision APIs from Microsoft Azure."
          },
          {
            "name": "Emotion",
            "url": "https://www.microsoft.com/cognitive-services/emotion-api",
            "snippet": "Cognitive Services Emotion API - microsoft.com"
          },
          {
            "name": "Bing Speech API",
            "url": "https://azure.microsoft.com/services/cognitive-services/speech/",
            "snippet": "Add speech recognition to your applications, including text to speech, with a speech API from Microsoft Azure. ... Cognitive Services; Bing Speech API;"
          },
          {
            "name": "Get Started for Free",
            "url": "https://azure.microsoft.com/services/cognitive-services/",
            "snippet": "Add vision, speech, language, and knowledge capabilities to your applications using intelligence APIs and SDKs from Cognitive Services."
          }
        ]
      }
    ]
  },
  "relatedSearches": {
    "id": "https://api.cognitive.microsoft.com/api/v7/#RelatedSearches",
    "value": [
      {
        "text": "microsoft bot framework",
        "displayText": "microsoft bot framework",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+bot+framework"
      },
      {
        "text": "microsoft cognitive services youtube",
        "displayText": "microsoft cognitive services youtube",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+youtube"
      },
      {
        "text": "microsoft cognitive services search api",
        "displayText": "microsoft cognitive services search api",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+search+api"
      },
      {
        "text": "microsoft cognitive services news",
        "displayText": "microsoft cognitive services news",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+news"
      },
      {
        "text": "ms cognitive service",
        "displayText": "ms cognitive service",
        "webSearchUrl": "https://www.bing.com/search?q=ms+cognitive+service"
      },
      {
        "text": "microsoft cognitive services text analytics",
        "displayText": "microsoft cognitive services text analytics",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+text+analytics"
      },
      {
        "text": "microsoft cognitive services toolkit",
        "displayText": "microsoft cognitive services toolkit",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+toolkit"
      },
      {
        "text": "microsoft cognitive services api",
        "displayText": "microsoft cognitive services api",
        "webSearchUrl": "https://www.bing.com/search?q=microsoft+cognitive+services+api"
      }
    ]
  },
  "rankingResponse": {
    "mainline": {
      "items": [
        {
          "answerType": "WebPages",
          "resultIndex": 0,
          "value": {
            "id": "https://api.cognitive.microsoft.com/api/v7/#WebPages.0"
          }
        }
      ]
    },
    "sidebar": {
      "items": [
        {
          "answerType": "RelatedSearches",
          "value": {
            "id": "https://api.cognitive.microsoft.com/api/v7/#RelatedSearches"
          }
        }
      ]
    }
  }
}

Passaggi successiviNext steps

Vedere ancheSee also