Vyhledávání na webu pomocí rozhraní API REST webové vyhledávání Bingu a Node.jsSearch the web using the Bing Web Search REST API and Node.js

V tomto rychlém startu poprvé zavoláte rozhraní API Bingu pro vyhledávání na webu a dostanete odpověď JSON, a nezabere vám to ani 10 minut.Use this quickstart to make your first call to the Bing Web Search API and receive a JSON response in less than 10 minutes.

K tomuto rychlému startu potřebujete účet služby Azure Cognitive Services s rozhraními API pro vyhledávání Bingu.This quickstart requires an Azure Cognitive Services account with Bing Search APIs. Pokud účet nemáte, můžete k získání klíče předplatného použít bezplatnou zkušební verzi.If you don't have an account, you can use the free trial to get a subscription key.

Viz také služeb Cognitive Services ceny – rozhraní API Bingu pro vyhledávání.See also Cognitive Services Pricing - Bing Search API.

PožadavkyPrerequisites

Tady je pár věcí, které budete na začátku tohoto rychlého startu potřebovat:Here are a few things that you'll need before running this quickstart:

Vytvoření projektu a deklarace požadovaných modulůCreate a project and declare required modules

Ve svém oblíbeném integrovaném vývojovém prostředí nebo editoru vytvořte nový projekt Node.js.Create a new Node.js project in your favorite IDE or editor. Pak do svého projektu, do souboru s názvem search.js, zkopírujte fragment kódu uvedený níže.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')

Nastavení klíče předplatnéhoSet the subscription key

Tento fragment kódu používá proměnnou prostředí AZURE_SUBSCRIPTION_KEY, pomocí které ukládá váš klíč předplatného. To je dobrý způsob, jak zabránit nechtěnému zveřejnění vašich klíčů, když se kód nasazuje.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. Pokud chcete vyhledat svůj klíč předplatného, klikněte sem.Click here to look up your subscription key.

Pokud používání proměnných prostředí neznáte nebo chcete spustit tuto aplikaci co nejdříve, můžete nahradit hodnotu process.env['AZURE_SUBSCRIPTION_KEY'] svým klíčem předplatného nastaveným jako řetězec.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.')
}

Vytvoření funkce k odeslání požadavkuCreate a function to make the request

Tato funkce odešle zabezpečený požadavek GET a zároveň uloží vyhledávací dotaz jako parametr dotazu na dané cestě.This function will make a secure GET request, saving the search query as a query parameter in the path. encodeURIComponent se používá k uvození neplatných znaků a klíč předplatného se předává jako hlavička.encodeURIComponent is used to escape invalid characters, and the subscription key is passed in a header. Zpětné volání dostane odpověď, která provede registraci k události data, aby se agregoval text JSON, k události error, aby se protokolovaly veškeré problémy, a k události end, aby se vědělo, kdy se má zpráva považovat za šablonu.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. Až to bude hotové, aplikace vytiskne zajímavé hlavičky a text zprávy.When complete, the app will print the interesting headers and message body. Můžete libovolně upravovat barvy a nastavit hloubku tak, aby odpovídaly vašim představám. Hloubka 1 nabízí dobré shrnutí odpovědi.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
    })
  })
}

Získání dotazuGet the query

Podívejme se na argumenty programu, abychom našli daný dotaz.Let's look at the program's arguments to find the query. První argument je cesta k uzlu, druhý je náš název souboru a třetí je váš dotaz.The first argument is the path to node, the second is our filename, and the third is your query. Pokud dotaz chybí, použije se výchozí dotaz Microsoft Cognitive Services.If the query is absent, a default query of "Microsoft Cognitive Services" is used.

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

Vytvoření požadavku a tisk odpovědiMake a request and print the response

A teď, když je všechno definované, zavoláme naši funkci!And now that everything is defined, let's call our function!

bingWebSearch(query)

Spojení všech součástí dohromadyPut it all together

Posledním krokem je spustit kód: node search.js "<your query>"The last step is to run your code: node search.js "<your query>".

Pokud chcete porovnat svůj kód s naším, tady je celý program: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 varable')
}
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)

Ukázková odpověďSample response

Odpovědi rozhraní API Bingu pro vyhledávání na webu se vrátí jako objekt JSON.Responses from the Bing Web Search API are returned as JSON. Ukázková odpověď je zkrácená, aby zobrazovala jenom jeden výsledek.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"
          }
        }
      ]
    }
  }
}

Další postupNext steps

Viz takéSee also