RESTFul接口和HTTP的幂等性分析

  • REST全称是Representational State Transfer,中文为表述性状态转移,REST指的是一组架构约束条件和原则
  • RESTful表述的是资源的状态性转移,在Web中资源就是URI(Uniform Resource Identifier)(统一资源标识符)
  • 如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构,HTTP是目前与REST相关的唯一实例

RESTful接口URL命名原则

  1. HTTP方法后跟的URL必须是名词且统一成名词复数形式
  2. URL中不采用大小写混合的驼峰命名,尽量采用全小写单词,如果需要连接多个单词,则采用“-”连接
  3. 示例:/users、/users-fans;反例:/getUsers、/getUsersFans

HTTP方法的语义

RESTful架构应该遵循统一的接口原则,应该使用标准的HTTP方法如GET和POST,并且遵循这些方法的语义

方法 语义
GET 获取指定资源
DELETE 删除指定资源
POST 发送数据给服务器,依据HTTP 1.1规范中的描述,结合实际项目开发经验,POST经常为了以统一的方法来涵盖以下功能:1在公告板,新闻组,邮件列表或类似的文章组中发布消息2通过注册新增用户,3向数据处理程序提供一批数据,例如提交一个表单
PUT 使用请求中的负载创建或者替换目标资源PUT和POST的区别在于PUT是幂等的,而POST不是。幂等的含义可以理解为调用一次与连续调用多次是等价的(没有副作用或副作用不变)

POST和PUT的区别

  • POST和PUT的区别容易被简单地误认为“POST表示创建资源,PUT表示更新资源”
  • 而实际上,二者均可用于创建资源,更为本质的差别是在幂等性方面

HTTP的幂等性

方法 幂等性 幂等性分析
GET 具备幂等性 用于获取资源,没有副作用,所以是幂等的。请注意,这里强调的是一次和N次并不是说每次请求的结果相同,而是每次请求不会产生不同的副作用。
DELETE 具备幂等性 用于删除资源,有副作用,但它应该满足幂等性,调用一次和N次对系统产生的副作用是相同的
POST 不具备幂等性 POST所指向资源并非POST要创建的资源本身,而是POST创建资源的接收者,比如POST:/news的含义是在news新闻组这个资源分类下新建一条新的新闻,所以两次相同的POST请求会在服务器端创建两份新的资源,它们是不同的。所以,POST方法不具备幂等性
PUT 具备幂等性 PUT对应的资源是要创建或更新的资源本身,语义是创建或更新,对同一资源进行多次PUT的副作用和一次PUT是相同的,因此,PUT方法具有幂等性

最新文章

  1. direction和unicode-bidi
  2. ajax之 get post请求
  3. Python源代码目录组织结构
  4. Unity-Animator深入系列---Foot IK
  5. JQuery之滑动幻灯片插件Easy Slider初体验
  6. Linux性能实时监测工具netdata安装配置
  7. 1003: A Bug
  8. html,JavaScript调用winfrom方法
  9. String类重写
  10. Python 面试中可能会被问到的30个问题
  11. mui单选和多选框
  12. [转] 对express中next函数的一些理解
  13. 解决 main(int argc, char** argv)这种情况下通过命令行传参,改为main函数里面给定参数。
  14. MySQL 聚簇索引和非聚簇索引的认识
  15. 请读下面的这句绕口令:ResourceManager中的Resource Estimator框架介绍与算法剖析
  16. [py][mx]operation模型设计
  17. 『PyTorch』第十三弹_torch.nn.init参数初始化
  18. python网络编程-进程锁
  19. 写了一个简单的CGI Server
  20. Linux C笔记

热门文章

  1. Kubernetes 解决方案-图解
  2. What are PCIe Slots
  3. Django中间件、csrf跨站请求、csrf装饰器、基于django中间件学习编程思想
  4. 能直接调试的开放API?这个API Hub绝了
  5. DRF JWT认证(一)
  6. MPU9250/MPU6050与运动数据处理与卡尔曼滤波(1)
  7. 2022.02.27 CF811E Vladik and Entertaining Flags(线段树+并查集)
  8. Weights Assignment For Tree Edges
  9. docker进阶_docker-compose
  10. 【远程文件浏览器】Unity+Lua开发调试利器