【问题标题】:What does "X wrapper for Node.js" generally mean?“Node.js 的 X 包装器”通常是什么意思?
【发布时间】:2015-01-01 10:58:56
【问题描述】:

例如,google-speech-api package 被描述为“节点的 Google Speech API 包装器”。

在这种情况下,包装器到底是什么?

【问题讨论】:

    标签: node.js wrapper


    【解决方案1】:

    在这种情况下,“包装器”是一个库,它为服务或库提供方便的接口,否则使用起来会更加不方便。包装器“包装”本机API 转换成更方便的形式。

    例如,通过 HTTP 请求使用 Google Speech API。这个page 给出了这个例子:

    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'
    

    (请注意,该页面基于 API 的 v1,但 API 现在是 v2。但是,我在这里所说的并不重要。)

    您绝对可以通过使用现有的 Node.js 函数(即没有包装器)发出等效的 HTTP 请求来执行该操作,但是:

    1. 您将不得不处理大量您确实不应该处理的细节。例如,查询总是以字符串https://www.google.com/speech-api/v1/recognize 开头。如果您手动执行此操作,则必须始终指定它。您可能必须在每个查询中设置标题。每个查询都可能需要传递一个 API 密钥。使用包装器,不依赖于您的具体情况的事物由包装器处理,依赖于您但不变的事物(如 API 密钥)一旦设置就可以设置一次且只能设置一次。

      李>
    2. 您的代码不会清楚地反映您想要做什么。在不了解 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: '...'}]}]}]
      });
      

      当然,阅读本文的人会想阅读包装器的文档,但至少他们会很快到达那里,而不是阅读一堆与大局无关的细节。

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 2020-03-18
      • 2021-08-02
      • 2020-10-02
      • 2011-05-27
      • 2018-05-03
      • 1970-01-01
      • 2015-12-30
      • 2012-04-02
      相关资源
      最近更新 更多