目录
一、前言
二、什么是接口?
2.1 什么是API
2.2 REST、RESTful、RESTful API
2.1.1 rest
2.1.2 RESTful
2.1.3 RESTful API
2.3 web API好处
前一章节讲什么是前后端,以及前后端是通过API交互的,但没有具体解释什么是API,这章节进行简单的解说。
我们经常听到开发一句话“你给我一个接口让我调用一下呗”,老板问能不能用自己的程序获取一些数据,开发往往也说"可以呀,让对方给一个接口和权限,让我们调用就行了"
那这里的接口到底指的是什么呢?
上面开发所说的接口并不是我们编程的接口Interface,这里的接口我们往往把它叫做API(Application Programming Interface,应用程序编程接口)
接口一般分2大类:
1. 非web的应用程序方面,一般是系统方面或CS模式的应用,叫一般叫系统API。你加入相关别人指定的“文件”,往往是链接库或SDK,你就可以使用这个库所提供的类、函数或方法去“操作”对方
2. web方面的,叫web API。一般就给我一个URL和一串授权的数字(我们给它起个名字叫token,令牌),你有了这个URL和一串授权数字,你就可以按别人公司的API文档使用别人指定的方法及参数之类了。
例子:dnspod API就是一个例子,地址为:https://www.dnspod.cn/docs/index.html
它就是使用POST应用对dnspod的页面操作的,返回的是json格式的数据。它可以使用linux的curl命令,-X POST指定是POST方式提交。为什么要使用 POST,因为它有授权的tonken令牌,不能明码,被你看到,不安全呀。
说了一大堆,简单来说API就是别人给你一个“文件”或要带上“授权字符串”URL地址,这样你就可以实现对其系统进行操作。
因为我们是电商运维,主要是网站,所以我们更多关注的是web API,上面的web API还没有说明清楚的话。
web api简单理解就是:对网站操作进行封装以url的形式供别人调用,并返回可网络传输的通用格式数据。
1.这个URL一般是有一定格式的,不同公司有不同的格式,一般api会有使用说明文档,教你如何使用。如阿里云api、dnspod api、微信小程序api
2. 请求这个URL往往需要在头部发授权验证码的,一般是使用token验证。
3.api返回的一般是通用格式可在网络中传输数据(json或xml)
一般选择json,xml比较旧现在已经很少人在使用了。一般不会直接返回HTML因为HTML已经是可以直接呈现了。
一般请求是通过网络传输的,所以要求能在网络中传输;通用才能被绝大部分程序解析,这样就与编程语言无关,就可以转化为自己所使用语言的数据类型进行存储。
粗暴的理解就是:如果一个URL返回的不是HTML,而是机器能直接解析的数据,这个URL就可以看成是一个Web API
注:
Web API顾名思义,是一个可以使用HTTP协议访问的API。
这是一个概念,而不是技术。我们可以使用不同的技术来构建Web API,如Java、.net等。
Web API一般基于HTTP/REST来实现,什么都不需要定义,参数(输入的数据)可以是JSON, XML或者简单文本,响应(输出数据)一般是JSON或XML。它不提供服务调用标准和服务发现标准。可以按你服务的特点来写一些简单的使用说明给使用者。 主要是把web api一般理解成http/REST来实现就行了。
上面讲到REST随便提一下REST、RESTful、RESTful API三种概念
REST(Representational State Transfer) 并不是一种具体的实现技术,而是一种软件架构风格,主要有以下特点:
- 从资源的角度来考察整个网络,每个资源有唯一标识
- 使用通用的连接器接口操作资源
- 对资源的操作不会改变资源标识
- 连接协议具有无状态性
- 能够使用 Cache 机制来增进性能
REST 风格几乎是为 HTTP 协议量身定做的,在 HTTP 协议中用 URI 来标识唯一的资源,用 GET、PUT、POST、DELETE 等动词来操作资源,HTTP 协议是无状态协议,可以通过 Cache 来提高性能。
REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful
有兴趣的可以了解一下阮一峰的《理解RESTful架构》
1.为什么会出现restful
在Restful之前的操作:
http://127.0.0.1/user/query/1 GET 根据用户id查询用户数据
http://127.0.0.1/user/save POST 新增用户
http://127.0.0.1/user/update PUT 修改用户信息
http://127.0.0.1/user/delete GET/POST 删除用户信息
RESTful用法:
get http://127.0.0.1/user/GET 根据用户id查询用户数据
post http://127.0.0.1/user POST 新增用户pu
put http://127.0.0.1/user/PUT 修改用户信息
delete http://127.0.0.1/user/DELETE 删除用户信息 PS:其中id为id具体号,比如001
之前的操作是没有问题的,大神认为是有问题的,有什么问题呢?你每次请求的接口或者地址,都在做描述,例如查询的时候用了query,新增的时候用了save,其实完全没有这个必要,我使用了get请求,就是查询.使用post请求,就是新增的请求,我的意图很明显,完全没有必要做描述,这就是为什么有了restful.
2. 使用
HTTP 请求在 RESTful Web 服务中的典型应用
资源 |
GET |
PUT |
POST |
DELETE |
一组资源的 URI,比如 http://www.example.com/resources/ |
列出 URI 及该资源组中每个资源的详细信息 |
使用一组给定的资源替换当前整组资源 |
在本组资源中创建 / 追加一个新资源 |
删除整组资源 |
单个资源的 URI,比如 http://www.example.com/resources/1 |
获取给定资源的详细信息 |
替换 / 创建指定的资源,并将其追加到相应的资源组 |
把指定的资源作为资源组,并在其下创建 / 追加一个新元素,使其隶属于当前资源 |
删除指定元素 |
符合REST架构设计的API
RESTful API 是一套互联网应用程序的 API 设计理论。
RESTful API 的返回结果应该符合以下规范
- GET /collection:返回资源对象的列表(数组)
- GET /collection/resource:返回单个资源对象
- POST /collection:返回新生成的资源对象
- PUT /collection/resource:返回完整的资源对象
- PATCH /collection/resource:返回完整的资源对象
- DELETE /collection/resource:返回一个空文档
有兴趣的可以了解一下阮一峰的《RESTful API 设计指南》《RESTful API 最佳实践》
简单例子可以看我写的《RESTful API说明及实例》
编写API有什么好处呢?由于API就是把Web App的功能全部封装了,所以,通过API操作数据,可以极大地把前端和后端的代码隔离,使得后端代码易于测试,前端代码编写更简单。
此外,如果我们把前端页面看作是一种用于展示的客户端,那么API就是为客户端提供数据、操作数据的接口。这种设计可以获得极高的扩展性。例如,当用户需要在手机上购买商品时,只需要开发针对iOS和Android的两个客户端,通过客户端访问API,就可以完成通过浏览器页面提供的功能,而后端代码基本无需改动。
当一个Web应用以API的形式对外提供功能时,整个应用的结构就扩展为:
值得注意的是 RESTful API是一个设计理论,并不是一个框架,是你按这种理论去设计。