什么是REST API?
架构,软件体系结构分为三部分:构建,用于描述计算机;连接器,用于描述构建的链接部分;配置将构建和连接器组成有机整体。
web基本技术:
URI(统一资源标示符)HTTP(超文本传输协议)(post、get、put、delete)
Hypertext。
1、每个资源都应该有唯一的一个标识
2、使用标准的方法更改资源的状态
3、request和response的自描述
4、资源多重表述
5、无状态服务
REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表示方式。获得这些表徵致使这些应用程序转变了其状态。随着不断获取资源的表示方式,客户端应用不断地在转变着其状态,所谓表述性状态转移(Representational State Transfer)。
这一观点不是凭空臆造的,而是通过观察当前Web互联网的运作方式而抽象出来的。Roy Fielding 认为,
“设计良好的网络应用表现为一系列的网页,这些网页可以看作的虚拟的状态机,用户选择这些链接导致下一网页传输到用户端展现给使用的人,而这正代表了状态的转变。”
REST是设计风格而不是标准。REST通常基于使用HTTP,URI,和XML以及HTML这些现有的广泛流行的协议和标准。
资源是由URI来指定。
对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应HTTP协议提供的GET、POST、PUT和DELETE方法。
通过操作资源的表现形式来操作资源。
资源的表现形式则是XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的格式。
REST的要求
客户端和服务器结构
连接协议具有无状态性
能够利用Cache机制增进性能
层次化的系统
随需代码 - Javascript (可选)
RESTful Web 服务
RESTful Web 服务(也称为 RESTful Web API)是一个使用HTTP并遵循REST原则的Web服务。它从以下三个方面资源进行定义:URI,比如:http://example.com/resources/。
§ Web服务接受与返回的互联网媒体类型,比如:JSON,XML ,YAML 等。
§ Web服务在该资源上所支持的一系列请求方法(比如:POST,GET,PUT或DELETE)。
该表列出了在实现RESTful Web 服务时HTTP请求方法的典型用途。
HTTP 请求方法在RESTful Web 服务中的典型应用
资源
GET
PUT
POST
DELETE
一组资源的URI,比如http://example.com/resources/
列出 URI,以及该资源组中每个资源的详细信息(后者可选)。
使用给定的一组资源替换当前整组资源。
在本组资源中创建/追加一个新的资源。 该操作往往返回新资源的URL。
删除 整组资源。
单个资源的URI,比如http://example.com/resources/142
获取 指定的资源的详细信息,格式可以自选一个合适的网络媒体类型(比如:XML、JSON等)
替换/创建 指定的资源。并将其追加到相应的资源组中。
把指定的资源当做一个资源组,并在其下创建/追加一个新的元素,使其隶属于当前资源。
删除 指定的元素。
PUT 和 DELETE 方法是幂等方法。GET方法是安全方法 (不会对服务器端有修改,因此也是幂等的)。
不像基于SOAP的Web服务,RESTful Web服务并没有的“正式”标准。 这是因为REST是一种架构,而SOAP只是一个协议。虽然REST不是一个标准,但在实现RESTful Web服务时可以使用其他各种标准(比如HTTP,URL,XML,PNG等)。
REST的优点
可以利用缓存Cache来提高响应速度
通讯本身的无状态性可以让不同的服务器的处理一系列请求中的不同请求,提高服务器的扩展性
浏览器即可作为客户端,简化软件需求
相对于其他叠加在HTTP协议之上的机制,REST的软件依赖性更小
不需要额外的资源发现机制
在软件技术演进中的长期的兼容性更好
转载于:https://www.cnblogs.com/zxtceq/p/5168076.html
什么是REST API?相关推荐
- 淘宝获取单笔订单信息服务端调用API及流程
淘宝获取单笔交易接口(文档地址):https://open.taobao.com/api.htm?docId=54&docType=2 调用接口所需依赖(文档地址):https://devel ...
- rancher部署项目Validation failed in API: Deployment.apps“”must be no more than 63 characters问题原因及解决方法
Validation failed in API: Deployment.apps "xxxxxxxxxx-x x x x x x x x x" is invalid: [meta ...
- RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别
1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...
- 通过聚合数据API获取微信精选文章
思路 在聚合数据申请账号(https://www.juhe.cn/) 通过聚合数据api获取微信精选文章api 通过newspaper库提取相应的文本内容,关于newspaper库的使用方法可以参考这 ...
- 使用 JavaCSV api 读取和写入 csv 文件
使用JavaCSV api 导包 我现在基本上都是Maven构建项目,相信大家也是,就不提供jar包了. <dependency><groupId>net.sourceforg ...
- API pytorch tensorflow
pytorch与tensorflow API速查表 方法名称 pytroch tensorflow numpy 裁剪 torch.clamp(x, min, max) tf.clip_by_value ...
- GPT3 api接口调用
原标题:OpenAI发布GPT3 api调用接口!可处理几乎所有英文问题 大数据文摘出品 作者:牛婉杨.笪洁琼 两周前,OpenAI又放了个大招:GPT3突然放出,其参数量达到1750亿,相当于160 ...
- pykafka连接重要使用pykafka,kafka-python的api开发kafka生产者和消费者
https://pykafka.readthedocs.io/en/latest/api/producer.html 说明文档 </div><h2 class="heade ...
- 降维-基于RDD的API
降维-基于RDD的API • Singular value decomposition (SVD) o Performance o SVD Example • Principal component ...
- 通过带Flask的REST API在Python中部署PyTorch
通过带Flask的REST API在Python中部署PyTorch 在本文中,将使用Flask来部署PyTorch模型,并用讲解用于模型推断的 REST API.特别是,将部署一个预训练的Dense ...
最新文章
- 【项目实战】汽车金融评分卡
- 成为一名JAVA高级工程师你需要学什么
- Git工作原理及功能结构
- 自动完成下拉框 Select2 关键字搜索的实例(本地数据与异步获取)
- VS2015 LINK : warning LNK4068: 未指定 /MACHINE;默认设置为 X86
- 转贴:如何恢复Thunderbird里误删除的邮件?三种方法
- SQL Server2005下载地址
- win7 双屏 双工具栏_Win7双屏复制/双屏扩展设置教程
- 可重用性,可维护性,可读性,可测试性,可用性,健壮性
- 第六章 姜小白当机立断逃莒国 姜诸儿瓜期不代终遇鬼
- MYSQL 命令行大全 (简洁、明了、全面)
- 分享史上java最牛逼 最简短的代码
- 拼多多销售数据分析主要包含哪些方面的数据?
- 2022山东健博会,食疗养生与滋补健康展,健康管理与精准医学展
- 第十八届全国大学生智能汽车竞赛 智能视觉组比赛细则
- undo和redo介绍
- springcloud-oauth2实践
- oracle数据库19c驱动包,Oracle Database 19c 19.3 Windows x64 64-bit 下载 安装
- 小康qq小助手 v1.0 官网
- PHP颜色差异降噪,颜色模式,明度通道,降噪加锐!这是种你必会的PS摄影后期技法!...
热门文章
- 算法之排序算法-直接插入排序
- Log4j的使用说明
- java设置项目根目录 工作目录 working dictionary
- 谈谈java中遍历Map的几种方法
- URAL1553 Caves and Tunnels 树链剖分 动态树
- linux下memcache安装
- [Webapp]国内移动端浏览器占比
- 运行银联支付系统demo
- Didn‘t find class “android.view.View$OnUnhandledKeyEventListener“,Didn‘t find class “androidx
- Render errors:One or more layouts are missing the layout_width or layout_height attributes