我对API的理解仅限于我将ajax调用发送到某个URL,并对我收到的数据执行某些操作。例如,我可以使用Rotten Tomatoes API中的数据来搜索和处理来自烂番茄的数据,例如电影评论和给定电影的元数据。
我很困惑的是 是一个API,同时jQuery也被认为是一个API(和许多其他“JavaScript API”一样)。例如,我似乎没有来回发送请求以便能够使用jQuery,因为我可以在我的本地文件结构中包含.js
文件。它与我提供的内置方法有关吗?
如果是这样,库和API有什么区别?
这是维基百科的定义:
应用程序编程接口(API)指定某些软件组件应如何相互交互。除了访问数据库或计算机硬件(例如硬盘驱动器或视频卡)之外,还可以使用API来简化编程图形用户界面组件的工作。
http://en.wikipedia.org/wiki/Application_programming_interface
这在JavaScript的上下文中意味着什么?对于我如何使用它意味着什么?任何人都可以花一点时间用实际(非抽象)外行人的术语解释这个问题吗?
答案 0 :(得分:2)
API只是已发布的合同。
它定义了操作可用,以及它们各自的输入和输出(如果存在)。
如果您正在调用Web服务,JavaScript函数或使用二进制文件,则无关紧要。他们都有一些正式的合同,通过这些合同进行互动。
因此,虽然Web服务有非常严格的合同,因为仅公开了公共方法,但jQuery定义了一组用于外部公共消费的方法。 / p>
示例:
var MyObject = function(){
var _state = "I'm private";
//Not intended for public consumption
this._prefix = "Hello, my name is ";
//Part of formal API
this.name = "Johnson";
};
// Part of formal API
MyObject.prototype.sayHello = function(){
console.log(this._prefix + this.name);
};
var obj = new MyObject();
obj.name = "Josh";
obj.sayHello(); // "Hello, my name is Josh"
在上面的示例中,对象具有供使用的公共API,但它也有一些您可以操作的成员,但不打算这样做。可能有许多理由在你的对象中有这样的东西,但弄乱它们可能会产生意想不到的后果。
只要他维护外部公共合同(API),作者就可以自由移动,重命名和更改实施细节。
同样, API是一份记录在案的合同 ......仅此而已。
答案 1 :(得分:0)
在外行人看来,API非常类似于您需要配置以使用自己的产品的任何功能。在jQuery的上下文中,它为您提供了比原生javascript更多的功能。您可以将元素配置为与此功能配合使用,以便为您提供额外的功能,并减少代码和工作量。 但是,库只是一些方法的集合,可以在软件组件中反复使用,以避免代码冗余。 但是,就现实世界中的工作而言,它们看起来都一样。