在这种上下文中,"包装器"是一个库,它为服务或库提供方便的接口,否则使用起来会更加不方便.包装器将本机API"包装"为更方便的形式.
例如,Google Speech API通过HTTP请求使用.此页面提供了此示例:
curl -X POST \
--data-binary @alsalam-alikum.flac \
--user-agent 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7' \
--header 'Content-Type: audio/x-flac; rate=16000;' \
'https://www.google.com/speech-api/v1/recognize?client=chromium&lang=ar-QA&maxresults=10'
Run Code Online (Sandbox Code Playgroud)
(注意页面是基于API的v1,但API现在是v2.但是,这与我在这里所说的无关.)
您绝对可以通过使用库存Node.js函数(即没有包装器)发出等效的HTTP请求来执行操作,但是:
你将不得不处理一些你真正不应该处理的细节.例如,查询始终以字符串开头https://www.google.com/speech-api/v1/recognize.如果手动执行,则必须始终指定它.您可能需要在每个查询上设置标头.每个查询都需要传递一个API密钥.使用包装器,事物不依赖于您的具体情况,由包装器和依赖于您的事物处理但是常量(如API密钥)一旦设置可以设置一次且仅一次.
您的代码不会清楚地反映您要执行的操作.只是在没有Google Speech API知识的情况下阅读它会看到您正在进行HTTP查询,但不会轻易弄清楚您实际在做什么.使用包装器,您可以编写与您尝试更接近的内容(从google-speech-api上面链接的页面):
var speech = require('google-speech-api');
var opts = {
file: 'speech.mp3',
key: '<Google API Key>'
};
speech(opts, function (err, results) {
console.log(results);
// [{result: [{alternative: [{transcript: '...'}]}]}]
});
Run Code Online (Sandbox Code Playgroud)
当然,读这篇文章的人会想要阅读包装文档,但至少他们会快速到达那里,而不是经历一堆与大局无关的细节.