快速入门:使用必应视觉搜索 REST API 和 Node.js 获取图像见解
警告
2020 年 10 月 30 日,必应搜索 API 从 Azure AI 服务迁移到必应搜索服务。 本文档仅供参考。 有关更新的文档,请参阅必应搜索 API 文档。 关于为必应搜索创建新的 Azure 资源的说明,请参阅通过 Azure 市场创建必应搜索资源。
根据此快速入门中的说明对必应视觉搜索 API 进行第一次调用。 此简单 JavaScript 应用程序会将一个图像上传到该 API,并显示返回的相关信息。 虽然此应用程序是以 JavaScript 编写的,但 API 是一种 RESTful Web 服务,与大多数编程语言兼容。
先决条件
- Node.js
- JavaScript 请求模块。 可以使用
npm install request
命令安装该模块。 - 表单数据模块。 可以使用
npm install form-data
命令安装该模块。
创建 Azure 资源
通过创建以下 Azure 资源之一开始使用必应视觉搜索 API:
- 在删除资源前,可通过 Azure 门户使用。
- 选择
S9
定价层。
- 在删除资源前,可通过 Azure 门户使用。
- 在多个 Azure AI 服务中对应用程序使用相同的密钥和终结点。
初始化应用程序
在你喜欢使用的 IDE 或编辑器中创建 JavaScript 文件,并设置以下要求:
var request = require('request'); var FormData = require('form-data'); var fs = require('fs');
为 API 终结点、订阅密钥和图像路径创建变量。 对于
baseUri
值,可以使用以下代码中的全局终结点,或者使用资源的 Azure 门户中显示的自定义子域终结点。var baseUri = 'https://api.cognitive.microsoft.com/bing/v7.0/images/visualsearch'; var subscriptionKey = 'your-api-key'; var imagePath = "path-to-your-image";
创建一个名为
requestCallback()
的函数来输出 API 的响应。function requestCallback(err, res, body) { console.log(JSON.stringify(JSON.parse(body), null, ' ')) }
构造并发送搜索请求
上传本地图像时,表单数据必须包含
Content-Disposition
标头。 将其name
参数设置为“image”,并且将filename
参数设置为映像的文件名。 表单内容包括图像的二进制数据。 可以上传的最大图像大小为 1 MB。--boundary_1234-abcd Content-Disposition: form-data; name="image"; filename="myimagefile.jpg" ÿØÿà JFIF ÖÆ68g-¤CWŸþ29ÌÄøÖ‘º«™æ±èuZiÀ)"óÓß°Î= ØJ9á+*G¦... --boundary_1234-abcd--
使用
FormData()
创建新的FormData
对象,并使用fs.createReadStream()
将图像路径附加至对象。var form = new FormData(); form.append("image", fs.createReadStream(imagePath));
使用请求库上传图像,并调用
requestCallback()
输出响应。 将订阅密钥添加到请求标头。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); });