Install the go-spew library to use a deep pretty printer to display the results. Use this command to install the library: $ go get -u https://github.com/davecgh/go-spew.
Create a project and import libraries
Create a new Go project in your IDE or editor. Then, import net/http for requests, ioutil to read the response, encoding/json to handle the JSON text of results, and the go-spew library to parse the JSON results.
Go
package main
import (
"fmt""net/http""io/ioutil""encoding/json""github.com/davecgh/go-spew/spew"
)
Create a struct to format the news search results
The NewsAnswer struct formats the data provided in the response JSON, which is multilevel and complex. The following implementation covers the essentials:
The following code declares the main function and assigns the required variables. Confirm that the endpoint is correct, and then replace the token value with a valid subscription key from your Azure account.
Go
funcmain() {
// Verify the endpoint URI and replace the token string with a valid subscription key. const endpoint = "https://api.bing.microsoft.com/v7.0/news/search"
token := "YOUR-ACCESS-KEY"
searchTerm := "Microsoft Cognitive Services"// Declare a new GET request.
req, err := http.NewRequest("GET", endpoint, nil)
if err != nil {
panic(err)
}
// The rest of the code in this example goes here in the main function.
}
Query and header
Add the query string and access key header.
Go
// Add the query to the request.
param := req.URL.Query()
param.Add("q", searchTerm)
req.URL.RawQuery = param.Encode()
// Insert the subscription-key header.
req.Header.Add("Ocp-Apim-Subscription-Key", token)
GET request
Create the client and send the GET request.
Go
// Instantiate a client.
client := new(http.Client)
// Send the request to Bing.
resp, err := client.Do(req)
if err != nil {
panic(err)
}
Send the request
Send the request and read the results by using ioutil.
Go
resp, err := client.Do(req)
if err != nil {
panic(err)
}
// Close the connection. defer resp.Body.Close()
// Read the results
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
Handle the response
The Unmarshall function extracts information from the JSON text returned by the Bing News Search API. Then, display nodes from the results with the go-spew pretty printer.
Go
// Create a new answer object
ans := new(NewsAnswer)
err = json.Unmarshal(body, &ans)
if err != nil {
fmt.Println(err)
}
fmt.Print("Output of BingAnswer: \r\n\r\n")
// Iterate over search results and print the result name and URL.for _, result := range ans.Value{
spew.Dump(result.Name, result.URL)
}
Results
The following output contains the name and URL of each result:
(string) (len=91) "Cognitive Services Market: Global Industry Analysis and Opportunity Assessment, 2019 - 2025"
(string) (len=142) "https://www.marketwatch.com/press-release/cognitive-services-market-global-industry-analysis-and-opportunity-assessment-2019---2025-2019-02-21"
(string) (len=104) "Microsoft calls for greater collaboration to harness the power of AI to empower people with disabilities"
(string) (len=115) "https://indiaeducationdiary.in/microsoft-calls-greater-collaboration-harness-power-ai-empower-people-disabilities-2/"
(string) (len=70) "Microsoft 'Intelligent Cloud Hub' to build AI-ready workforce in India"
(string) (len=139) "https://cio.economictimes.indiatimes.com/news/cloud-computing/microsoft-intelligent-cloud-hub-to-build-ai-ready-workforce-in-india/67187807"
(string) (len=81) "Skills shortage is stopping many Asian companies from embracing A.I., study shows"
(string) (len=106) "https://www.cnbc.com/2019/02/20/microsoft-idc-study-skills-shortages-stopping-companies-from-using-ai.html"
(string) (len=143) "Cognitive Computing in Healthcare Market Emerging Top Key Vendors- Apixio, MedWhat, Healthcare X.0, Apple, Google, Microsoft, and IBM 2017-2025"
(string) (len=40) "http://www.digitaljournal.com/pr/4163064"
(string) (len=49) "Microsoft launches AI skills initiative in Brazil"
(string) (len=80) "https://www.zdnet.com/article/microsoft-launches-ai-skills-initiative-in-brazil/"
(string) (len=45) "Kuwait's CITRA and Microsoft host AI OpenHack"
(string) (len=70) "http://www.itp.net/618639-kuwaits-citra-and-microsoft-host-ai-openhack"
(string) (len=51) "CITRA and Microsoft collaborate to host AI workshop"
(string) (len=123) "https://www.zawya.com/mena/en/press-releases/story/CITRA_and_Microsoft_collaborate_to_host_AI_workshop-ZAWYA20190212105751/"