学习笔记 - Rest full API 总结

小编 2026-06-05 阅读:562 评论:0
REST API 概念    Representational State Transfer 一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的...

REST API 概念    Representational State Transfer

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

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。

REST中的资源所指的不是数据,而是数据和表现形式的组合,比如“最新访问的10位会员”和“最活跃的10位会员”在数据上可能有重叠或者完全相同,而由于他们的表现形式不同,所以被归为不同的资源,这也就是为什么REST的全名是Representational State Transfer的原因。

 

REST API的设计原则

1. 服务器-客户端原则 
- 在整个应用中,需要将客户端与服务器分开,两者之间尽量解耦合,都可以分开演进 
2. 无状态 
- 客户端的状态不会在服务端存储。每个session的信息只在客户端存储。 
3. 可缓存 
- 同样的请求应该有同样的返回,使得请求可缓存。 
4. 分层 
- 客户端无法分辨自己是否直接连接到服务器或者是中间层。这个性质可以进一步增强可扩展性。 
5. 统一的接口设计 

接口的设计原则:

      1. 识别资源 
      - 资源通过请求进行识别。识别后的资源会在服务端进行转换格式,返回到客户端。返回的格式与数据本身无关。 
      2. 通过资源的表达来操作资源 
      - 客户端需要保存完整的资源,以及必要的元信息(MetaData),使得这些信息足够对资源进行修改或删除。 
      3. 自解释的消息 
      - 每个消息需要包含足够的信息来决定如何处理这个消息。例如在指定parser的时候需要使用Internet media type来指定。 
      4. HATEOAS 
      - 字面意思是,超媒体作为应用状态转移的引擎 
      - 从最开始的一共请求开始,每次返回的请求能够告诉客户端,服务端还有哪些资源提供。有时可以返回带有超链接的文                  字。 
      - 客户端不需要根据服务端的数据结构进行任何定制

HTTP Method 与  API 说明

GET:      获取资源列表或单个资源

PUT:         将指定的资源进行替换

PATCH:    将指定的资源局部更新

POST:    新建一条记录。

DELETE:删除对应记录

Patch

2010年  HTTP协议中增加了一个操作 :Patch

Patch 为何不幂等呢? 
有两个解释,一个是,在两次patch请求之间,如果对应资源有改变,那么两次patch请求造成的结果不同, 
返回的object也不同。 
另一个解释是,当资源模型中有一个列表时,如果多次执行 add 操作,那么这个列表几次操作后得到的结果也不同。

RESTful中的PUT和PATCH实践

在UserApi中,有这样三个接口 
1. PUT /users/{id} 更新用户信息 
2. PATCH /users/role/{id} 更新用户角色 
3. PATCH /users/status/{id} 更新用户状态

在这三个接口便可以看出PUT和PATCH的区别 
PUT方法主要是用来更新整个资源的,而PATCH方法主要是用来执行某项操作并更新资源的某些字段

  • PUT /users/{id} 更新用户信息

要求是系统管理员、管理员或者是用户本人,才能使用该接口

  • PATCH /users/role/{id} 更新用户角色

要求是系统管理员才能使用该接口

  • PATCH /users/status/{id} 更新用户状态

要求是系统管理员、管理员才能使用该接口

REST API: 该使用部分更新还是全部更新?

关于Rest API更新资源的讨论: 
当更新一个对象的时候,是否要将完整object全部信息重新提交到服务器?还是只提交部分内容?

一种是完整提交的方案 
              认为在前端需要保存完整的object数据,在前端由用户做更改, 
              之后将完整的object重新使用PUT方法传回服务器。
好处   : API幂等      后端设计简单
弊端   : 传送数据量过大


一种是部分提交的方案 
               认为每次在前端更改内容的时候,只将更新的内容提交到服务器即可
好处   : 交互流量少
弊端   : 当该模型某些字段可为null时,如何知道没有指定的字段,是要求置为Null还是保持原样?

 

参考:

https://blog.csdn.net/qq_35264464/article/details/79490618 

https://blog.csdn.net/bychahaha/article/details/53271394

https://blog.csdn.net/u013731455/article/details/56278168

https://blog.csdn.net/chlu113/article/details/51853331 HTTP协议详解

版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表