1.

API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

2.

简单来说就是函数。
比如你写了一个库,
里面有很多函数,
如果别人要使用你这个库,
但是并不知道每个函数内部是怎么实现的。
使用的人也就只是知道这个函数的入口参数和返回值或者这个函数是做什么的。
对于用户来说 ,
你的这些函数就是API。
API(Application Programming Interface应用程序编程接口) 是一些预先定义好的函数,
目的是提供应用程序以及开发人员基于某软件或硬件得以访问一组例程的能力。

作者:爱要不留余力
链接:https://www.zhihu.com/question/38594466/answer/147066011
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 
3.

给你举个特别容易理解的例子

有一天,轮子哥写了一个专门抓取知乎小黄文的AI,而他每天都会查阅小黄文列表并且点赞。恰好你也是小黄文爱好者,那么轮子哥的账号对你来说就是API接口,你要做的唯一事情就是关注轮子哥账号,每天只需要查阅轮子哥的动态就能看到小黄文,但是不用关心轮子哥到底是用什么方法找到这么多小黄文的。

作者:彭天浩
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 
4.
 

通俗的讲API 就是前后端间的联通。假象你去一家餐厅,桌子上有一份菜单,厨房能为你提供菜单上的菜式。那么我们还缺少一个能和后厨联系的人,所以服务员MM就是去告诉后厨你选的菜,再将菜带回到你的桌子上。MM带着你的request去告诉system,然后将response 带回给你。

来看一个API案例,airline system ,你订机票,你将你的航程提交,会访问网站的database,来看你选择的日期,座位是否是可选。但如果你不是在他的网站上订机票,你是在一个汇总不同的航班信息的online travel service 上,那么这个service 调用了 前面airline system 的API 。这个接口就像上面例子的服务员MM,带着你的要求去airline system 上 收集信息 ,然后带回到online travel service 上 。所以你就把它想象成你的服务员MM在前后端间交付数据,创建联系。

作者:我要干掉太阳
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 
5.
 
作者:优达学城(Udacity)

我最近跟一位 Techstars 的创业家聊天时,问了她一个问题:“你们公司的 API 是什么?” 这听起来是个挺奇怪的问题,但其实并不是。

每家创业公司都有一个面向外界接口。有些接口非常简单,比如说 Google,你只要输入关键词搜索就好;有些接口复杂一些,比如在 Amazon 上买东西,你可以浏览商品、搜索商品、添加商品到购物车、下订单、请求退款,等等。

即使你不是工程师或是产品经理,思考你的公司会向外界提供什么 API 也是很有帮助的。这能够使你对自己的业务是什么以及为什么有更加清晰的认识。

API 思维帮助你保持最简和清晰。

API 是什么?

API(Application Programming Interface)即应用程序接口。你可以认为 API 是一个软件组件或是一个 Web 服务与外界进行的交互的接口。而我们在这里要谈论的,是作为一家公司如何跟外界进行交互。从另一个角度来说,API 是一套协议,规定了我们与外界的沟通方式:如何发送请求和接收响应。

让我们拿网站上常见的复选框(checkbox)作为例子。复选框的接口允许你选择或者取消选择它。

/check -- causes checkbox to be checked
/uncheck -- causes checkbox to be unchecked

再举个例子,Digital Ocean(VPS 供应商)提供的一次性启动 10 个服务器的 API 可能长成这样:

/launchServers?numServers=10 -- starts running servers in the cloud.

在这个例子中,launchServers 命令允许用户指定要启动的服务器的数量。绝大多数服务都支持这样的自定参数,一是更灵活,二是复用性好。要是启动 10 个服务器和 20 个服务器有两个不同的命令,那就太蠢了,因为它们本质上是一样的。

商业API 又是什么?

设计你的商业 API 时,可以从你的业务有哪些关键概念入手来考虑相关的命令,这样会比较方便。思考:你的用户们可以做哪些事情?下面是一些简单的例子:

http://google.com/search?term=techstars

http://amazon.com/browse?category=books

http://amazon.com/buy?bookId=b&customerId=c

http://uber.com/orderCar?location=loc&customerId=c

http://twitter.com/postTweet?text=t&userId=u

http://facebook.com/friend?userId=u&friendId=f

现在的服务大多都运行在云上,通过 HTTP 协议与外界交互。这不是太直观,因为我们和用户看到的都是界面美观友好的 APP。但实际通过 HTTP 传输的是这些命令。它们非常重要,因为这些最底层和直接的接口最终决定了你的用户能够如何使用你的服务。通过这样的思考,我们才能透过人机界面理清业务的核心。

如何设计你的商业API?

现在让我们把注意力集中到你的公司。开始创业时,你有一大堆事情要做:寻找和理解创始人与市场之间的契合,跟用户沟通,思考你们独有的见解和优势,市场策略,等等等等。除此以外,设计商业 API 也是你在早期就应该做的事情之一。

花点时间研究 HTTP 协议吧(真的不难)!在开发你的 MVP(Minimum Viable Product,最简可行产品)之前,你就要把 API 设计好了。

设计 API 可以帮助你理清自己的业务。你会在这个过程中决定 MVP 中会包含哪些东西,不包含哪些东西。你会给某些命令更高的优先级。最后,拿一张纸把设计好的 API 写下来,你就知道自己是提供了太多还是太少。

尽可能地将你的 API 设计得简单和优雅。不要考虑应该添加什么,而是想想应该去掉什么。

有了基础的 API 以后,跟客户和团队沟通起来就方便多了。这将为你接下来打造 MVP 提供坚实的基础。

当你设计出令人满意的 API 之后,就去实现它吧。一个一个让原始 API 能通过 HTTP 被访问。没错,你现在还不需要花哨的界面。在实现的过程中,你会对自己的业务有更深的了解。

随着业务增长,升级你的 API

随着你的业务进化和增长,你的 API 也需要作出改变。持续地更新和改善它。可以扩充它,但要 “矜持” 一点。最伟大的公司都有着简单的 API。

想一下 Google,它提供了一个非常简单的接口,但内部的工作原理是无比复杂的。类似地,乔布斯总是驱动 Apple 公司来不断简化用户界面。Apple 的产品往往通过简单的界面来隐藏背后的工程复杂度和独创性。

“你会希望你的业务越简单越好,隐藏在接口背后的服务越有价值越好。”

在业务增长的过程中,一些子业务可能会演化出它们自己的 API。你可能会有公共接口和内部接口。这时将接口保持得简单而整洁就开始凸显价值了。不断鞭策自己去实现和使用简单的接口。

“你的业务本身永远是你的 API 的第一个也是最大的用户。”

通常伴随着业务增长,用户访问你的服务的方式也会越来越多。你可能同时有桌面版应用和移动端应用,短消息服务,机器人,iOS 和 安卓应用,等等。这些都是你的 API 的用户,也是你的业务的用户。

我们生活在一个云服务和自动化的时代。每家互联网巨头,Google、Amazon、Facebook 等,都为他们的服务提供了 API。而在未来,所有的服务都将在一个图形界面以外拥有编程接口。随着人工智能和自动化逐渐进入我们的世界,越来越多的请求和访问会在这些云服务和 API 之间发生。如果你打算创业,为了准备如此激动人心的未来,你可以从思考和实现自己的 API 做起。

本文由优达学城(Udacity)编译,翻译:章凌豪,原文参考自 http://alexiskold.net

 
 

关于 API的更多相关文章

  1. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  2. 12306官方火车票Api接口

    2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...

  3. 几个有趣的WEB设备API(二)

    浏览器和设备之间还有很多有趣的接口, 1.屏幕朝向接口 浏览器有两种方法来监听屏幕朝向,看是横屏还是竖屏. (1)使用css媒体查询的方法 /* 竖屏 */ @media screen and (or ...

  4. html5 canvas常用api总结(三)--图像变换API

    canvas的图像变换api,可以帮助我们更加方便的绘画出一些酷炫的效果,也可以用来制作动画.接下来将总结一下canvas的变换方法,文末有一个例子来更加深刻的了解和利用这几个api. 1.画布旋转a ...

  5. JavaScript 对数据处理的5个API

    JavaScript对数据处理包括向上取整.向下取整.四舍五入.固定精度和固定长度5种方式,分别对应ceil,floor,round,toFixed,toPrecision等5个API,本文将对这5个 ...

  6. ES5对Array增强的9个API

    为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...

  7. javascript的api设计原则

    前言 本篇博文来自一次公司内部的前端分享,从多个方面讨论了在设计接口时遵循的原则,总共包含了七个大块.系卤煮自己总结的一些经验和教训.本篇博文同时也参考了其他一些文章,相关地址会在后面贴出来.很难做到 ...

  8. 一百元的智能家居——Asp.Net Mvc Api+讯飞语音+Android+Arduino

    大半夜的,先说些废话提提神 如今智能家居已经不再停留在概念阶段,高大上的科技公司都已经推出了自己的部分或全套的智能家居解决方案,不过就目前的现状而言,大多还停留在展厅阶段,还没有广泛的推广起来,有人说 ...

  9. 在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用

    由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.NET Web API 的书籍少之又少(我们看到的相关内容往往是某本介绍ASP.NET M ...

  10. bootstrap + requireJS+ director+ knockout + web API = 一个时髦的单页程序

    也许单页程序(Single Page Application)并不是什么时髦的玩意,像Gmail在很早之前就已经在使用这种模式.通常的说法是它通过避免页面刷新大大提高了网站的响应性,像操作桌面应用程序 ...

随机推荐

  1. JS a标签默认鼠标事件,导致无法修改input选中状态

    今天踩了一个坑

  2. 装B命令行,常用Windows命令

    winver检查Windows版本 dxdiag检查DirectX信息 gpedit.msc 组策略   regedit.exe 注册表 Msconfig.exe 系统配置实用程序  lusrmgr. ...

  3. 【Beta】Scrum Meeting 1

    前言 会议定点:新主楼F座教室 会议时间:2019/4/26 会议目的:确定Beta版本的功能和设计文档 一.任务进度 组员 下阶段任务 大娃 后端模型正确性说明文档 二娃 记录会议内容,撰写博客 三 ...

  4. xcode: 解决 __nw_connection_get_connected_socket_block_invoke 1 Connection has no connected handler

    Run -> Arguments -> Environment Variables -> Add -> Name: "OS_ACTIVITY_MODE", ...

  5. spring的bean创建过程

    Spring的bean创建过程 步骤 执行过程 描述 1 ThreadLocal.set bean创建之前将beanName的一些属性放进ThreadLocal,避免多线程创建bean导致问题,并发创 ...

  6. Ubuntu 18.04安装中文输入法

    reference: https://blog.csdn.net/fx_yzjy101/article/details/80243710 https://pinyin.sogou.com/linux/ ...

  7. LeetCode 56 合并区间

    题目: 给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [ ...

  8. springboot入门学习-helloworld实例

    今天学习了springboot,发现使用springboot创建项目确实非常方便,创建第一个springboot项目之前先看一下下面两个问题. 一.什么是springboot? Spring Boot ...

  9. Python PIL

    Python PIL PIL (Python Image Library) 库是Python 语言的一个第三方库,PIL库支持图像存储.显示和处理,能够处理几乎所有格式的图片. 一.PIL库简介 1. ...

  10. sklearn-adaboost

    sklearn中实现了adaboost分类和回归,即AdaBoostClassifier和AdaBoostRegressor, AdaBoostClassifier 实现了两种方法,即 SAMME 和 ...