RESTful框架 目前仅有HTTP标准实践了此思想

参考菜鸟教程
https://learn.microsoft.com/zh-cn/azure/architecture/best-practices/api-design

介绍

REST:Representational State Transfer 表述性状态转移

在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构
REST指的是一组架构约束条件和原则。

从资源的定义获取表述关联状态变迁等角度解释RESTful

资源的定义–URI的设计

不应该是无意义,不可读的字符排列组合

  • 使用_或- 来让URI可读性更好
  • 使用/来表示资源的层级关系
  • 使用?用来过滤资源
  • ,或;可以用来表示同级资源的关系

资源的获取–统一资源接口

1xx:相关信息
2xx:操作成功
3xx:重定向
4xx:客户端错误
5xx:服务器错误

GET 检索资源

获取表示
变更时获取表示(缓存)

状态说明
200(OK) - 表示已在响应中发出
204(无内容) - 资源有空表示
301(Moved Permanently) - 资源的URI已被更新
303(See Other) - 其他(如,负载均衡)
304(not modified)- 资源未更改(缓存)
400(bad request)- 指代坏请求(如,参数错误)
404(not found)- 资源不存在
406(not acceptable)- 服务端不支持所需表示
500(internal server error)- 通用错误响应
503(Service Unavailable)- 服务端当前无法处理请求

POST 创建资源

使用服务端管理的(自动产生)的实例号创建资源
创建子资源
部分更新资源
如果没有被修改,则不过更新资源(乐观锁)

状态说明
200(OK)- 如果现有资源已被更改
201(created)- 如果新资源被创建
202(accepted)- 已接受处理请求但尚未完成(异步处理)
301(Moved Permanently)- 资源的URI被更新
303(See Other)- 其他(如,负载均衡)
400(bad request)- 指代坏请求
404(not found)- 资源不存在
406(not acceptable)- 服务端不支持所需表示
409(conflict)- 通用冲突
412(Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
415(unsupported media type)- 接受到的表示不受支持
500(internal server error)- 通用错误响应
503(Service Unavailable)- 服务当前无法处理请求

PUT 替换资源

用客户端管理的实例号创建一个资源
通过替换的方式更新资源
如果未被修改,则更新资源(乐观锁)

状态说明
200(OK)- 如果已存在资源被更改
201(created)- 如果新资源被创建
301(Moved Permanently)- 资源的URI已更改
303(See Other)- 其他(如,负载均衡)
400(bad request)- 指代坏请求
404(not found)- 资源不存在
406(not acceptable)- 服务端不支持所需表示
409(conflict)- 通用冲突
412(Precondition Failed)- 前置条件失败(如执行条件更新时的冲突)
415(unsupported media type)- 接受到的表示不受支持
500(internal server error)- 通用错误响应
503(Service Unavailable)- 服务当前无法处理请求

PATCH 修改资源

DELETE 删除资源

状态说明
200(OK)- 资源已被删除
301(Moved Permanently)- 资源的URI已更改
303(See Other)- 其他,如负载均衡
400(bad request)- 指代坏请求
404(not found)- 资源不存在
409(conflict)- 通用冲突
500(internal server error)- 通用错误响应
503(Service Unavailable)- 服务端当前无法处理请求

统一资源接口,要求URI只应该来表示资源的名称,而不应该包括资源的操作——URI不应该使用动作来描述

资源的表述

文本资源可以采用html、xml、json等格式,图片可以使用PNG或JPG展现出来

通过HTTP内容协商,客户端可以通过Accept头请求一种特定格式的表述,服务端则通过Content-Type告诉客户端资源的表述形式。

状态的转移

客户端负责维护应用状态,而服务端只维护资源状态
客户端与服务端的交互必须是无状态的,每一次请求中包含处理该请求所需的一切信息。
服务端不需要在请求间保留应用状态,只有在接受到实际请求的时候,服务端才会关注应用状态。

客户端应用状态在服务端提供的超媒体的指引下发生变迁。服务端通过超媒体告诉客户端当前状态有哪些后续状态可以进入。
这些类似"下一页"之类的链接起的就是这种推进状态的作用——指引你如何从当前状态进入下一个可能的状态。

实践规范

参考文章
不要在URL中出现动词,URL 用来定位资源
METHOD 表达行为:
GET (SELECT):从服务器检索特定资源,或资源列表。
POST (CREATE):在服务器上创建一个新的资源。
PUT (UPDATE):更新服务器上的资源,提供整个资源
PATCH (UPDATE):更新服务器上的资源,仅提供更改的属性
DELETE (DELETE):从服务器删除资源。

规则1:URI结尾不应包含(/)
规则2:正斜杠分隔符**(/)必须用来指示层级关系**
规则3:应使用连字符( - )来提高URI的可读性
规则4:不得在URI中使用下划线(_)
规则5:URI路径中全都使用小写字母

响应超媒体保障资源的连通性

RESTful API 最佳实践 - 阮一峰

什么是幂等-视频

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值