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方法具有幂等性

02 RESTFul接口和HTTP的幂等性分析的更多相关文章

  1. 底层restful接口修改分析

    记录接口调用次数,接口调用时间需求. 需要修改公共的类,就是restful接口,可以认为是底层的代码,具体的实现有哪些?插入数据库肯定不能影响性能.

  2. [转]简单识别 RESTful 接口

         本文描述了识别一个接口是否真的是 RESTful 接口的基本方法.符合 REST 架构风格的接口,称为 RESTful 接口.本文不打算从架构风格的推导方面描述,而是从 HTTP 标准的方面 ...

  3. RESTful接口设计原则和优点

    RESTful架构优点: 前后端分离,减少流量 安全问题集中在接口上,由于接受json格式,防止了注入型等安全问题 前端无关化,后端只负责数据处理,前端表现方式可以是任何前端语言(android,io ...

  4. java io系列02之 ByteArrayInputStream的简介,源码分析和示例(包括InputStream)

    我们以ByteArrayInputStream,拉开对字节类型的“输入流”的学习序幕.本章,我们会先对ByteArrayInputStream进行介绍,然后深入了解一下它的源码,最后通过示例来掌握它的 ...

  5. RESTful接口签名认证实现机制

    RESTful接口 互联网发展至今,催生出了很多丰富多彩的应用,极大地调动了人们对这些应用的使用热情.但同时也为互联网应用带来了严峻的考验.具体体现在以下几个方面: 1.     部署方式的改变:当用 ...

  6. SpringBoot Restful 接口实现

    目录 SpringBoot 核心注解 SpringBoot Restful 接口实现 封装响应数据 SpringBoot 核心注解 SpringBoot 基础入门 注解 说明 Component 声明 ...

  7. RESTful 接口调试分享利器 restc

    这个工具来自于https://elemefe.github.io/restc/  这里对Abp进行了一次封装 1.在项目中添加nuget包 Abp.Web.Api.Restc 2.在项目Abp模块的D ...

  8. RESTful接口设计原则/最佳实践(学习笔记)

    RESTful接口设计原则/最佳实践(学习笔记) 原文地址:http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api 1 ...

  9. Swagger+Spring mvc生成Restful接口文档

    简介 Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集 ...

随机推荐

  1. 五、JDK的安装与配置

    一.JDK下载与安装 1.1.下载JDK安装包 博主在这里给大家准备了一个64位操作系统的jdk1.8以便大家下载(使用的是迅雷) 点击此处下载 提取码:dfbt 如果其他小伙伴的电脑版本不一样,博主 ...

  2. 论文翻译:2018_LSTM剪枝_Learning intrinsic sparse structures within long short-term memory

    论文地址:在长短时记忆中学习内在的稀疏结构 论文代码:https://github.com/wenwei202/iss-rnns 引用格式:Wen W, He Y, Rajbhandari S, et ...

  3. Spring Authorization Server授权服务器入门

    11月8日Spring官方已经强烈建议使用Spring Authorization Server替换已经过时的Spring Security OAuth2.0,距离Spring Security OA ...

  4. DevOps转型到底值不值?

    摘要:企业进行DevOps转型是否有价值?是否能计算出明确的投资回报率呢?本文将为您解惑. 本文分享自华为云社区<DevOps转型到底值不值?>,作者:敏捷小智 . 引言 企业都是以盈利为 ...

  5. 有意思的CVE-2022-0337复现

    前言 前两天在刷tw,看到了个比较有意思的一个CVE漏洞,价值奖励是10000美刀,比较好奇的是价值10000美刀的漏洞是什么样子的,漏洞利用就是需要在浏览器中进行用户交互才能触发该漏洞,但由于 Wi ...

  6. MySQL备份迁移之mydumper

    简介 mydumper 是一款开源的 MySQL 逻辑备份工具,主要由 C 语言编写.与 MySQL 自带的 mysqldump 类似,但是 mydumper 更快更高效. mydumper 的一些优 ...

  7. 【论文笔记】A Survey on Federated Learning: The Journey From Centralized to Distributed On-Site Learning and Beyond(综述)

    A Survey on Federated Learning: The Journey From Centralized to Distributed On-Site Learning and Bey ...

  8. input输入框自动填充的问题

    火狐浏览器打开页面,input可以自动填充历史输入值,现在想无论input类型是type='text'还是'password'都禁止自动填充,因为我写的页面在input='text'时先检查是否有输入 ...

  9. 详谈:pNFS增强文件系统架构

    点击上方"开源Linux",选择"设为星标" 回复"学习"获取独家整理的学习资料! 通过 NFS(由服务器.客户机软件和两者之间的协议组成) ...

  10. NLTK基础学习

    学习视频来自:Youtube 学习文档来自:简书 NLTK:自然语言工具包 目的:将段落拆分为句子.拆分词语,识别这些词语的词性,高亮主题,帮助机器了解文本关于什么.这个小节将解决意见挖掘或情感分析的 ...