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应用程序相关推荐

  1. spark restful_Spark入门:也可以用Java创建轻量级的RESTful应用程序

    spark restful 最近,我一直在使用Spark (一种Java的Web框架,与Apache Spark 不相关)编写RESTful服务. 当我们计划写这篇文章时,我已经做好了不可避免的接口, ...

  2. Spark入门:也可以用Java创建轻量级的RESTful应用程序

    最近,我一直在使用Spark (一种Java的Web框架,与Apache Spark 不相关)编写RESTful服务. 当我们计划写这篇文章时,我已经做好了不可避免的接口,样板代码和深层层次结构的Ja ...

  3. 为什么说RESTful对程序员如此重要

    为什么说RESTful对程序员如此重要?现在的软件,都需要各种接口,程序员写程序如何设计接口,比较好的解决方案就是使用RESTful架构. Fielding将他对互联网软件的架构原则,定名为REST, ...

  4. 一个RESTful+MySQL程序

    准备工作 1.安装mysql. 2.安装mysql可视化工具Navicat.(由于本人偏好,所以暂时用这个可视化工具). 3.Intellij安装mysql jdbc驱动. 4.在GlassFish中 ...

  5. 在 Java 应用程序中使用 Elasticsearch: 高性能 RESTful 搜索引擎和文档存储快速入门指南

    如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsear ...

  6. Spring Boot:构建一个RESTful Web应用程序

    介绍: REST代表表示状态传输 ,是API设计的体系结构指南. 我们假设您已经具有构建RESTful API的背景. 在本教程中,我们将设计一个简单的Spring Boot RESTful Web应 ...

  7. 前后端分离开发,RESTful 接口应该这样设计

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 译者 | 唐尤华 dzone.com/refcardz/rest- ...

  8. RESTful 架构基础

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来自:唐尤华 译自:https://dzone.com/refca ...

  9. 三、Spring Boot在org.springframework.boot组下应用程序启动器

    表13.1. Spring Boot应用程序启动器 名称 描述 Pom spring-boot-starter-thymeleaf 使用Thymeleaf视图构建MVC Web应用程序的启动器 Pom ...

  10. RESTful编程究竟是什么?

    RESTful编程究竟是什么? #1楼 这可能是它的样子. 创建具有三个属性的用户: POST /user fname=John&lname=Doe&age=25 服务器响应: 200 ...

最新文章

  1. Denoising DNA deep sequencing data—high-throughput sequencing errors and their correction
  2. 史上最全站点降权原因解析
  3. 个人总结------高级知识点必会
  4. ZZULIOJ 1105: 判断友好数对(函数专题)
  5. flink source和sink
  6. mysql 给指定用户指定数据库
  7. 蒋本珊计算机组成原理知识点笔记,计算机组成原理习题答案解析(蒋本珊)
  8. php iis user,IIS+PHP环境的./路径问题
  9. Zend Studio小技巧:自动生成版本信息
  10. Unity3D自动寻路之Nav Mesh Agent(导航网格代理)
  11. linux ssh互信配置
  12. 项目中 前后台接口 请求项目移植的问题
  13. Ubuntu终端Terminator的安装与配置使用
  14. C++ map通过key获取value
  15. STM32L4系列单片机ADC通过内部参考电压精确计算输入电压
  16. AutoSAR系列讲解(入门篇)4.1-BSW概述
  17. AnyPi智能语音交互方案开发-智能语音音箱方案
  18. 学习JAVABEANS
  19. 锂离子电池健康状态估计简介(一):基于Python的数据处理计算SOH,RUL,CCCT,CVCT
  20. Asp.Net MVC学习记录之“一个实体对象不能由多个 IEntityChangeTracker 实例引用”

热门文章

  1. linux 主机的网络属性基本配置:
  2. 解决linux下javac -version和java -version版本显示不一致
  3. Centos7安装dig命令
  4. 怎样实现短信验证功能
  5. ZKUI中文编码以及以docker方式运行的问题
  6. 为链接加上加载等待信息
  7. Oracle DML封锁机制研究
  8. 请问如何获取字符串在数组中的位置
  9. C++ 为什么要引入异常处理机制
  10. 计算机网络体系结构及协议