一、什么是API

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

二、什么是RestFul风格

      在没有前后端分离概念之前,一个网站的完成总是“all in one”,在这个阶段,页面、数据、渲染全部在服务端完成,这样做的最大的弊端是后期维护,扩展极其痛苦,开发人员必须同时具备前后端知识。于是后来慢慢的兴起了前后端分离的思想:即后端负责数据编造,而前端则负责数据渲染,前端静态页面调用指定api获取到有固定格式的数据,再将数据展示出来,这样呈现给用户的就是一个”动态“的过程。

       而关于api这部分的设计则成了一个问题。如何设计出一个便于理解,容易使用的api则成了一个问题,而所谓的RESTful就是用来规范我们的API的一种约束。

       作为REST,其实是Representational State Transfer(表象层状态转变)三个单词的缩写,它由Roy Fielding于2000年论文中提出,它代表着分布式服务的架构风格。

       要深刻理解消化Representational State Transfer这三个单词到底意味着什么,可以从以下几个方面进行理解:1.每一个URI代表一种资源;2.客户端和服务器之间,传递这种资源的某种表现层;3.客户端通过四个HTTP动词(get、post、put、delete),对服务器端资源进行操作,实现”表现层状态转化”。

注意点:

1.符合REST约束风格和原则的应用程序或设计就是RESTful.

2.REST(Representational State Transfer):表现层状态转移,一种软件架构风格,不是标准。既然不是标准,我可以遵守,也可以不遵守

3.restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制

三、为什么要使用RestFul风格

      随着前后端分离的流行,以及移动互联网的爆发,导致后端API接口要向不同的Web端提供服务,那么对于 API 的规范就需要有一定的要求了。这个时候 RESTFul 的优势就体现出来了,它更简洁,更有层次,更易于实现缓存。

四、RestFul六大原则

1.C-S架构

数据的存储在Server端,Client端只需使用就行。两端彻底分离的好处使client端代码的可移植性变强,Server端的拓展性变强。两端单独开发,互不干扰。

2. 无状态

http请求本身就是无状态的,基于C-S架构,客户端的每一次请求带有充分的信息能够让服务端识别。请求所需的一些信息都包含在URL的查询参数、header、div,服务端能够根据请求的各种参数,无需保存客户端的状态,将响应正确返回给客户端。无状态的特征大大提高的服务端的健壮性和可拓展性。

当然,这种无状态性的约束也是有缺点的,客户端的每一次请求都必须带上相同重复的信息确定自己的身份和状态,造成传输数据的冗余性,但这种确定对于性能和使用来说,几乎是忽略不计的。

3.统一的接口

REST架构的核心内容,统一的接口对于RESTful服务非常重要。客户端只需要关注实现接口就可以,接口的可读性加强,使用人员方便调用。

REST接口约束定义为:资源识别; 请求动作; 响应信息; 它表示通过uri标出你要操作的资源,通过请求动作(http method)标识要执行的操作,通过返回的状态码来表示这次请求的执行结果。

4.一致的数据格式

服务端返回的数据格式要么是XML,要么是Json(获取数据),或者直接返回状态码,一些知名网站的开放平台的操作数据的api,post、put、patch都是返回的一个状态码 。

如请求一条微博信息,服务端响应信息应该包含这条微博相关的其他URL,客户端可以进一步利用这些URL发起请求获取感兴趣的信息,再如分页可以从第一页的返回数据中获取下一页的URT也是基于这个原理。

5.可缓存

在万维网上,客户端可以缓存页面的响应内容。因此响应都应隐式或显式的定义为可缓存的,若不可缓存则要避免客户端在多次请求后用旧数据或脏数据来响应。管理得当的缓存会部分地或完全地除去客户端和服务端之间的交互,进一步改善性能和延展性。

6.按需编码、可定制代码

服务端可选择临时给客户端下发一些功能代码让客户端来执行,从而定制和扩展客户端的某些功能。比如服务端可以返回一些 Javascript 代码让客户端执行,去实现某些特定的功能。提示:REST架构中的设计准则中,只有按需编码为可选项。如果某个服务违反了其他任意一项准则,严格意思上不能称之为RESTful风格。

五、规范

  • 用URI定位资源
  • URI由名称组成
  • 使用HTTP方法对应数据操作
  1. 常见的http请求方法

GET, POST 和 HEAD方法(HTTP1.0)

OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法(HTTP1.1)

其中GET、POST、Delete、PUT四种请求方法在REstFul风格中最为常见

rest api 规则 rest for api_服务端

2.URI和URL区别

URI:Universal Resource Identifier 统一资源标志符

URL:Universal Resource Locator 统一资源定位符

URN:Universal Resource Name 统一资源名称

rest api 规则 rest for api_rest api是什么_02

3.幂等性和安全性

幂等性:当一个请求与多个同样的请求会不会有相同的结果

安全性:一个请求发出之后会不会对服务器资源产生改变

4.常用HTTP响应码

rest api 规则 rest for api_服务端_03