`
pluto418
  • 浏览: 166897 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

RESTful架构总结

阅读更多

RESTful架构(Representational State Transfer)

 

RESTful三要素

 

1. 资源(Resources)

REST的名称"表现层状态转化"中,省略了主语。"表现层"其实指的是"资源"(Resources)的"表现层"。

所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。所谓"上网",就是与互联网上一系列的"资源"互动,调用它的URI。

 

2.表现层(Representation)

"资源"是一种信息实体,它可以有多种外在表现形式。我们把"资源"具体呈现出来的形式,叫做它的"表现层"(Representation)。比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。URI只代表资源的实体,不代表它的形式。严格地说,有些网址最后的".html"后缀名是不必要的,因为这个后缀名表示格式,属于"表现层"范 畴,而URI应该只代表"资源"的位置。它的具体表现形式,应该在HTTP请求的头信息中用Accept和Content-Type字段指定,这两个字段 才是对"表现层"的描述。

 

3.状态转化(State Transfer)

访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。

互联网通信协议HTTP协议,是一个无状态协议。这意味着,所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源。

 

什么是RESTful架构:

  (1)每一个URI代表一种资源;

  (2)客户端和服务器之间,传递这种资源的某种表现层;

  (3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"。

 

RESTful误区:

      (1)URI包含动词。因为"资源"表示一种实体,所以应该是名词,URI不应该有动词

      (2)URL包含版本。同一种资源的不同表现形式,应该采用同一个URL。版本号可以在HTTP请求头信息的 Accpet字段进行区分

 

 

附件是 xstream + spring MVC 实现的Rest的WebService 示例

分享到:
评论

相关推荐

    Restful架构的学习

    这是一片简单的关于restful学习内容,本人零基础,通过百度学习后总结的,希望可以对浏览的同学有所帮助。

    分布式架构基础能力解析

    https/http概念解析,Restful, 序列化,WebService, Tcp/ip, 分布式场景架构。 这些都是自己学习当中总结下来的,为了找工作,面向阿里,腾讯,供参考

    eve-building-restful-mongodb-backed-apis课程:EVE的课程材料和讲义:构建RESTful MongoDB-backed APIs课程

    课程总结 Eve是一个为人类设计的开源Python REST API框架。 它允许轻松地构建和部署高度可定制的,功能齐全的RESTful Web服务。 这门课程的内容是什么?有什么不同? 本课程将教您轻松地基于Flask和MongoDB构建...

    《分布式系统常用技术及案例分析》PDF

    同时讲述分布式系统的常见架构体系,其中也包括最近比较火的RESTful 风格架构、微服务、容器技术等。第二部分主要列举了在分布式系统应用中经常用到的一些主流技术,并介绍这些技术的作用和用法;这些技术涵盖了...

    分布式系统常用技术及案例分析.pdf

    同时讲述分布式系统的常见架构体系,其中也包括最近比较火的RESTful 风格架构、微服务、容器技术等。第二部分主要列举了在分布式系统应用中经常用到的一些主流技术,并介绍这些技术的作用和用法;这些技术涵盖了...

    后端开发开发技巧总结与入门常用的技巧总结.docx

    服务化架构:采用微服务架构,将复杂系统拆分为多个独立可部署的服务。 日志记录:详尽且有组织地记录日志,方便问题定位和追踪。 测试驱动开发:坚持单元测试、集成测试,保证代码质量。 持续集成/持续部署(CI/...

    Elasticsearch总结.doc

    Elasticsearch的特性 分布式、全文检索、近实时搜索和分析、高可用、模式自由、restful 讲述Elasticsearch的架构和Elasticsearch 的核心 概念 二、索引数据 单词 文档矩阵,倒排索引,倒排索引实例,单词词典 三、...

    基于仓库开发设计查询信息管理系统的毕业设计实现.zip

    前端与后端通过RESTful API进行通信,从而实现了前后端分离的架构。 ## 系统功能 查询信息管理系统实现了以下核心功能:用户登录、用户注册、查询信息展示、查询信息筛选与搜索、查询信息添加、查询信息编辑与删除...

    微服务设计与解决方案.docx

    三、微服务应用4个设计原则 我们总结了四个原则推荐给大家: AKF拆分原则 前后端分离 无状态服务 Restful通信风格 1.AKF拆分原则 微服务设计与解决方案全文共18页,当前为第3页。 微服务设计与解决方案全文共18页,...

    摩拜2018校招嵌入式工程师笔试卷及答案.pdf

    2. CoAP:CoAP(Constrained Application Protocol)是一种基于RESTful架构的协议,主要用于有限制的网络环境中的机器对机器通信。 3. HTTP:HTTP(Hypertext Transfer Protocol)是一种基于TCP/IP的无状态请求/...

    Java版水果管理系统源码-Spring-Cloud:SpringCloud微服务架构教程ByGary。每个目录对应着教程里每个组件的项目de

    总结: 小, 且专注于做一件事情 独立的进程中 轻量级的通信机制 松耦合、独立部署 1.1.1 轻量级的通信机制: 微服务各服务之间使用“轻量级”的通信机制,所谓轻量级是指通信协议与语言无关、与平台无关。微服务通信...

    基于新型物业在线管理系统的毕业设计实现.zip

    - 后端逻辑处理层使用Spring Boot框架,实现了RESTful API和权限管理; - 数据存储层使用MySQL数据库,使用MyBatis框架进行数据访问。 ## 总结 通过本篇毕业设计,我们成功地实现了一个新型的物业在线管理系统,该...

    JAVA.WEB服务.构建与运行

    《Java Web服务:构建与运行》通过提供混合架构概述、完整的工作代码示例以及短而精确的编译、部署和执行应用程序的指示,采用明确实用的方法来处理这些技术。你将学习如何从头开始编写Web服务以及集成现有服务到你...

    JavaEE大型分布式电商项目 淘淘商城 29期

    淘淘商城是一个综合性的B2C平台,类似与京东、天猫商城,其打造的是商业模式为“社区+电子商务”, 用户不只是在社区中有自己的圈子,还...分组实战 + 项目总结以及就业指导 拔高--Redis集群、Tomcat优化、MySQL优化

    lumen-api-starter:Lumen 8基础上扩展出的API启动项目,精心设计的目录结构,规范统一的响应数据格式,存储库模式架构的最佳实践

    设计的Lumen Api起动器 :red_heart_selector:发现了网上很多的API相关的开发规范文档,参考了很多大佬们总结的经验,决定尝试使用最新版本的Lumen(当下最新版本是Lumen 8.x)来构建一个基础功能完备,规范统一,...

    Kubernetes核心概念总结

    APIServer负责对外提供RESTful的KubernetesAPI服务,它是系统管理指令的统一入口,任何对资源进行增删改查的操作都要交给APIServer处理后再提交给etcd。如架构图中所示,kubectl(Kubernetes提供的客户端工具,该...

    Java后端面试手册-Java基础知识

    分布式系统和微服务:介绍分布式系统的概念、常见的分布式技术(如分布式缓存、消息队列)、微服务架构等。 网络编程:涉及Socket编程、TCP/IP协议、HTTP协议等网络相关知识。 性能优化和调优:介绍Java程序性能...

    ofo:基于微信小程序和thinkPHP5框架的全栈系统,三端分离,api接口基于restful标准

    项目截图体验版页面支付页面首页用车页面开锁页面开锁页面收费页面充值页面个人中心页面我的钱包页面ofo小程序的架构体系:小程序数据从服务器到前端交互总结:数据库设计:用户表: **user | CREATE TABLE `user` ...

Global site tag (gtag.js) - Google Analytics