4--RESTful应用程序
Rails资源是一个重要的概念,对于掌握rails有很大帮助。
REST的概念和RESTful应用程序的风格。
MVC用来定义应用的结构,REST则用来定义用户与应用之间的交互方式(就是定义了交互的一种规范)。
REST概念:资源的表现层状态转化,关键词:资源、表现层、状态转化。
资源:用户能够获取的信息都叫资源,我们上网浏览的信息都是资源。
以访问博客为例:
用户请求访问博客列表第一页,服务器接收请求并响应,返回第一页的内容到屏幕上,返回的内容可以是html格式也可以是xml、txt甚至可以是图片、音频或者视频等等,服务器返回内容的格式就是表现层。
那么我们要访问下一页就告诉服务器这个请求,问题来了:REST是一种无状态服务,什么叫无状态呢?也就是服务器不会保存当前处于第几页的状态,因此你说看下一页服务器并不知道下一页是第几页。所以要将请求改为我要看博客的第二页或者第三页,要资源的具体位置而不是下一页,只有这样,服务器才会把资源的列表内容返回给你。也就说用户想操作服务器,就必须通过URL定位服务的资源,让后通过某种手段让服务的状态发生转换,这种状态转换时建立在表现层的基础上,所以叫做表现层的状态转换。
那么REST是如何实现上面那些过程呢?一句话概括就是通过URL定位资源和HTTP动作描述操作。
URL定位资源:就是一条完整的URL路径,必须包含你要获取资源的准确位置。如上图,回答了下面两个问题:
如我们要访问123这个网站下的一首歌曲,歌名叫123
如我们要访问123这个网站下的所有歌曲,那么这个URL该怎么定位呢?
URL定位了要操作的资源,那么还要定义资源操作的方式:获取还是修改还是删除还是更新等等,那么标明操作方式的动作就需要HTTP动作(获取就是GET,提交就是POST。。。)来描述。
服务器通过URL定位资源知道了你要访问的是songs下的abc这首歌,通过HTTP动作描述知道了你要访问资源的方式是GET也就是获取,那么服务器就完整地知道了你的请求的内容,就会返回给你相应的信息完成这次请求。
REST严禁在URL中加入HTTP动词,比如上面不能在abc 后面加上参数比如get等,REST要求操作方式一定不能显现在URL中而是应该出现在HTTP的请求中。
实现并遵循REST规范的应用程序,我们就叫它RESTful应用程序或者叫REST风格的应用程序。
使用REST风格优势:
标准化URL,你一看到URL就知道要访问的资源是什么,如上就知道是访问一首名为123的歌。
服务器是无状态的,保证了服务器的横向拓展性强,你就想想,比如服务器需要保存状态的话,1000个用户就要保存1000个状态对服务器压力是很大的。
最后是跨平台,任何一种支持HTTP协议的应用程序都可以与RESTful应用程序进行交互,比如安卓和苹果你都可以只用一种REST风格进行开发,这样就一次开发多平台使用。
Rails就是一种完全符合REST风格的RESTful应用程序。
转载于:https://www.cnblogs.com/blueColdFire/p/5192539.html
4--RESTful应用程序相关推荐
- spark restful_Spark入门:也可以用Java创建轻量级的RESTful应用程序
spark restful 最近,我一直在使用Spark (一种Java的Web框架,与Apache Spark 不相关)编写RESTful服务. 当我们计划写这篇文章时,我已经做好了不可避免的接口, ...
- Spark入门:也可以用Java创建轻量级的RESTful应用程序
最近,我一直在使用Spark (一种Java的Web框架,与Apache Spark 不相关)编写RESTful服务. 当我们计划写这篇文章时,我已经做好了不可避免的接口,样板代码和深层层次结构的Ja ...
- 为什么说RESTful对程序员如此重要
为什么说RESTful对程序员如此重要?现在的软件,都需要各种接口,程序员写程序如何设计接口,比较好的解决方案就是使用RESTful架构. Fielding将他对互联网软件的架构原则,定名为REST, ...
- 一个RESTful+MySQL程序
准备工作 1.安装mysql. 2.安装mysql可视化工具Navicat.(由于本人偏好,所以暂时用这个可视化工具). 3.Intellij安装mysql jdbc驱动. 4.在GlassFish中 ...
- 在 Java 应用程序中使用 Elasticsearch: 高性能 RESTful 搜索引擎和文档存储快速入门指南
如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsear ...
- Spring Boot:构建一个RESTful Web应用程序
介绍: REST代表表示状态传输 ,是API设计的体系结构指南. 我们假设您已经具有构建RESTful API的背景. 在本教程中,我们将设计一个简单的Spring Boot RESTful Web应 ...
- 前后端分离开发,RESTful 接口应该这样设计
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 译者 | 唐尤华 dzone.com/refcardz/rest- ...
- RESTful 架构基础
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来自:唐尤华 译自:https://dzone.com/refca ...
- 三、Spring Boot在org.springframework.boot组下应用程序启动器
表13.1. Spring Boot应用程序启动器 名称 描述 Pom spring-boot-starter-thymeleaf 使用Thymeleaf视图构建MVC Web应用程序的启动器 Pom ...
- RESTful编程究竟是什么?
RESTful编程究竟是什么? #1楼 这可能是它的样子. 创建具有三个属性的用户: POST /user fname=John&lname=Doe&age=25 服务器响应: 200 ...
最新文章
- Denoising DNA deep sequencing data—high-throughput sequencing errors and their correction
- 史上最全站点降权原因解析
- 个人总结------高级知识点必会
- ZZULIOJ 1105: 判断友好数对(函数专题)
- flink source和sink
- mysql 给指定用户指定数据库
- 蒋本珊计算机组成原理知识点笔记,计算机组成原理习题答案解析(蒋本珊)
- php iis user,IIS+PHP环境的./路径问题
- Zend Studio小技巧:自动生成版本信息
- Unity3D自动寻路之Nav Mesh Agent(导航网格代理)
- linux ssh互信配置
- 项目中 前后台接口 请求项目移植的问题
- Ubuntu终端Terminator的安装与配置使用
- C++ map通过key获取value
- STM32L4系列单片机ADC通过内部参考电压精确计算输入电压
- AutoSAR系列讲解(入门篇)4.1-BSW概述
- AnyPi智能语音交互方案开发-智能语音音箱方案
- 学习JAVABEANS
- 锂离子电池健康状态估计简介(一):基于Python的数据处理计算SOH,RUL,CCCT,CVCT
- Asp.Net MVC学习记录之“一个实体对象不能由多个 IEntityChangeTracker 实例引用”