API

API就是一种为你客户提供服务的方法

你可能听说过公司将API包做成一个产品,例如,”地下气象站“出售的就是它自己的气象数据API的 入口
 
 
实例场景: 你的个人小型商业网站有一个给客户注册的预约表格,你想要给你的客户提供自动创建一个谷歌日历时间的能力。
 
 
API 使用:这概念就是让你的网站服务器带着请求去创建一个具体的事件,你的服务器之后会接收到谷歌的响应,处理它,然后将有关信息发送回给你的浏览器,例如发送一个认证信息给你的用户
 
 
另外,你的浏览器会通过你的服务器经常直接发送API 请求到谷歌服务器
 
 
谷歌日历的API 和其他的远程服务器的API 究竟有什么不同
 
 
专业的说,不同之处在于他们的请求和响应的形式是不一样的
 
 
当你提交整个页面的时候,你的浏览器期待的是一种HTML格式的响应,这个响应里包含了一些描述性的代码,当谷歌日历API 响应的时候会返回一些数据,大多是类似与json的格式
 
 
如果你的网站服务器发出了个API 请求,那么你的网站服务器就变成了个客户端(类似与当你使用浏览器访问网站的时候你的浏览器就成了客户端一样)
 
 
从用户的角度来说,API允许他们完成一些没有离开网站的动作
 
 
很多现代的网站都至少使用了一些第三方API
 
 
很多问题都有了第三方的解决方案了,无论是以函数库或者是服务的形式,使用第三方的解决方案现在已经逐渐变得更简单和更可靠。
 
 
这是很常见的,开发团队将他们的应用分解到多个服务器里面,服务器通过API 相互交流。为主应用服务器提供辅助功能的服务器这方面的知识可以参考微型服务器
 
 
总得来说,当一个公司向它的用户提供了API 的时候,这就意味着他们建造了一系列的专用URL通道,用来返回纯数据形式的响应,意味这响应不会包含一些用于解释的额外开销,你期望的是一种像网站一样的图表用户界面。
 
 
你的浏览器可以发送这种请求吗,当然可以,由于实际的HTTP传输都是以文本的形式进行的,你的浏览器总是能达到它能展示响应的最好状态
 
 
例如,你可以通过浏览器直接访问GitHub的API ,甚至根本不需要访问标记(=_= # 什么是访问标记.....),当你用浏览器访问一个GitHub的用户API的时候,你将获得一个JSON形式的响应
 
  1.  
    {
  2.  
    "login": "petrgazarov",
  3.  
    "id": 5581195,
  4.  
    "avatar_url": "https://avatars.githubusercontent.com/u/5581195?v=3",
  5.  
    "gravatar_id": "",
  6.  
    "url": "https://api.github.com/users/petrgazarov",
  7.  
    "html_url": "https://github.com/petrgazarov",
  8.  
    "followers_url": "https://api.github.com/users/petrgazarov/followers",
  9.  
    "following_url": "https://api.github.com/users/petrgazarov/following{/other_user}",
  10.  
    "gists_url": "https://api.github.com/users/petrgazarov/gists{/gist_id}",
  11.  
    "starred_url": "https://api.github.com/users/petrgazarov/starred{/owner}{/repo}",
  12.  
    "subscriptions_url": "https://api.github.com/users/petrgazarov/subscriptions",
  13.  
    "organizations_url": "https://api.github.com/users/petrgazarov/orgs",
  14.  
    "repos_url": "https://api.github.com/users/petrgazarov/repos",
  15.  
    "events_url": "https://api.github.com/users/petrgazarov/events{/privacy}",
  16.  
    "received_events_url": "https://api.github.com/users/petrgazarov/received_events",
  17.  
    "type": "User",
  18.  
    "site_admin": false,
  19.  
    "name": "Petr Gazarov",
  20.  
    "company": "PolicyGenius",
  21.  
    "blog": "http://petrgazarov.com/",
  22.  
    "location": "NYC",
  23.  
    "email": "petrgazarov@gmail.com",
  24.  
    "hireable": null,
  25.  
    "bio": null,
  26.  
    "public_repos": 23,
  27.  
    "public_gists": 0,
  28.  
    "followers": 7,
  29.  
    "following": 14,
  30.  
    "created_at": "2013-10-01T00:33:23Z",
  31.  
    "updated_at": "2016-08-02T05:44:01Z"
  32.  
    }
一个JSON的响应就像它已经是可以让你直接使用的代码了,很容易在这段文本里添加额外的数据,然后你就可以对这段数据做任何你想要做的事了
 
 

A就是application

作为结束,就多扔几个关于API 的事例吧
 
 
“应用”可以指很多事情,在API 里面他指代的是:
 
 1 :一个具有不同功能的软件
 2:整个服务器,整个app,或者是app的一小部分
 
基本上任何软件都可以从环境中有区别的分离开来,有可能在API 里成为A(也就是Application),也可能它本身就是某种API
 
 
假设你在你的代码里使用了第三方的函数库,一旦与你的代码结合了,一个函数路就成为了你真个APP里的一部分,成为软件中特殊的一部分,函数库很可能具有一个让你可以与你其他的代码相互沟通的API 
 
 
这有其他的一些例子,在面对对象设计中,代码是被组织进对象的,你的应用程序可能是由上百个可以相互交流的类构成的
 
 
每个类都有一个API ,一系列公共方法和用于和其他类进行交流的的属性
 
 
一个类可能有内部的私有化属性,这意味这它是对外部环境隐藏的(不是一个API )
 
posted @ 2018-11-18 22:56  灵魂异乡人  阅读(127)  评论(0编辑  收藏  举报