Quickstart: Get image insights using the Bing Visual Search REST API and Node.js
Use this quickstart to make your first call to the Bing Visual Search API. This simple JavaScript application uploads an image to the API, and displays the information returned about it. Although this application is written in JavaScript, the API is a RESTful Web service compatible with most programming languages.
Prerequisites
- Node.js.
- The Request module for JavaScript. You can use
npm install request
command to install the module. - The form-data module. You can use the
npm install form-data
command to install the module.
Initialize the application
Create a JavaScript file in your favorite IDE or editor, and set the following requirements:
var request = require('request'); var FormData = require('form-data'); var fs = require('fs');
Create variables for your API endpoint, subscription key, and the path to your image.
var baseUri = 'https://api.bing.microsoft.com/bing/v7.0/images/visualsearch'; var subscriptionKey = 'your-api-key'; var imagePath = "path-to-your-image";
Create a function named
requestCallback()
to print the response from the API.function requestCallback(err, res, body) { console.log(JSON.stringify(JSON.parse(body), null, ' ')) }
Construct and send the search request
When you upload a local image, the form data must include the
Content-Disposition
header. Set itsname
parameter to "image", and set thefilename
parameter to the file name of your image. The contents of the form include the binary data of the image. The maximum image size you can upload is 1 MB.--boundary_1234-abcd Content-Disposition: form-data; name="image"; filename="myimagefile.jpg" ÿØÿà JFIF ÖÆ68g-¤CWŸþ29ÌÄøÖ‘º«™æ±èuZiÀ)"óÓß°Î= ØJ9á+*G¦... --boundary_1234-abcd--
Create a new
FormData
object withFormData()
, and append your image path to it by usingfs.createReadStream()
.var form = new FormData(); form.append("image", fs.createReadStream(imagePath));
Use the request library to upload the image, and call
requestCallback()
to print the response. Add your subscription key to the request header.form.getLength(function(err, length){ if (err) { return requestCallback(err); } var r = request.post(baseUri, requestCallback); r._form = form; r.setHeader('Ocp-Apim-Subscription-Key', subscriptionKey); });