Java RESTful Web Service实战(第2版) 1.1 解读REST

简介:

1.1 解读REST

REST(Representational State Transfer)翻译为表述性状态转移,源自Roy Thomas Fielding博士在2000年就读加州大学欧文分校期间发表的一篇学术论文《Architectural Styles and the Design of Network-based Software Architectures》。REST之父在该论文中提出了REST的6个特点,分别是:客户端–服务器的、无状态的、可缓存的、统一接口、分层系统和按需编码。

REST具有跨平台、跨语言的优势。从其诞生开始,就得到了诸多语言的快速支持,最著名的是ROR(Ruby on Rails)框架。新兴的语言(比如NodeJs、Golang)、工具平台(Docker、Spark)和公有云,更是将REST默认为服务的开放形式。

1.1.1 一种架构风格

REST是一种架构风格。在这种架构风格中,对象被视为一种资源(resource),通常使用概念清晰的名词命名。

表述性状态是指资源数据在某个瞬时的状态快照。资源可以有多种表述(representation),表述状态具有描述性,包括资源数据的内容、表述格式(比如XML、JSON、Atom)等信息。

REST的资源是可寻址的,通过HTTP1.1协议(RFC 2616)定义的通用动词方法(比如GET、PUT、DELETE、POST),使用URI协议(RFC3305)来唯一标识某个资源公布出来的接口。

请求一个资源的过程可以理解为访问一个具有指定性和描述性的URI,通过HTTP协议,将资源的表述从服务器“转移”到客户端或者相反方向。

阅读指南

REST不是一种技术(technology),也不是一个标准(standard)/协议(protocol),而是一种使用既有标准:HTTP+URI+XML(XML似乎成为了数据格式的借指,不仅代表XML本身)来实现其要求的架构风格。因此,与之对应的不是SOAP协议,而是像RPC这样的架构风格。

1.1.2 基本实现形式

HTTP+URI+XML是REST的基本实现形式,但不是唯一的实现形式。REST一开始便使用已有的HTTP协议(RFC 2616)、URI协议(RFC3305)来描述其特征,而对如何使用一种编程语言来实现,并没有进行任何描述和规定,甚至应该包含哪些传输类型或者数据格式也没有描述,但通常的实现至少包含XML格式。

具体而言,HTTP协议和URI用于统一接口和定位资源,文本、二进制流、XML和JSON等格式用来作为资源的表述。正如采用已有技术XMLHttpRequest+JavaScript+XML(XML后来几乎被JSON替代)实现Ajax一样,使用HTTP+URI+XML实现REST的好处是让开发者持有这些已知的技术来开发REST的入门门槛较低,关注点更容易放到REST的核心概念和业务逻辑上。

阅读指南

以HTTP+URI+XML实现的应用并不一定是REST服务,但对于Ajax,这个逆命题是成立的。因为Ajax是一种技术,而REST是一种架构风格。学习和使用REST的关键是掌握这种思想,而不是具体的实现形式。

相关文章
|
10月前
|
移动开发 开发者 HTML5
构建响应式Web界面:Flexbox与Grid的实战应用
【10月更文挑战第22天】随着互联网的普及,用户对Web界面的要求越来越高,不仅需要美观,还要具备良好的响应性和兼容性。为了满足这些需求,Web开发者需要掌握一些高级的布局技术。Flexbox和Grid是现代Web布局的两大法宝,它们分别由CSS3和HTML5引入,能够帮助开发者构建出更加灵活和易于维护的响应式Web界面。本文将深入探讨Flexbox和Grid的实战应用,并通过具体实例来展示它们在构建响应式Web界面中的强大能力。
151 3
|
11月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
149 4
|
6月前
|
XML JSON API
Understanding RESTful API and Web Services: Key Differences and Use Cases
在现代软件开发中,RESTful API和Web服务均用于实现系统间通信,但各有特点。RESTful API遵循REST原则,主要使用HTTP/HTTPS协议,数据格式多为JSON或XML,适用于无状态通信;而Web服务包括SOAP和REST,常用于基于网络的API,采用标准化方法如WSDL或OpenAPI。理解两者区别有助于选择适合应用需求的解决方案,构建高效、可扩展的应用程序。
|
11月前
|
前端开发 JavaScript Python
Python Web应用中的WebSocket实战:前后端分离时代的实时数据交换
在前后端分离的Web应用开发模式中,如何实现前后端之间的实时数据交换成为了一个重要议题。传统的轮询或长轮询方式在实时性、资源消耗和服务器压力方面存在明显不足,而WebSocket技术的出现则为这一问题提供了优雅的解决方案。本文将通过实战案例,详细介绍如何在Python Web应用中运用WebSocket技术,实现前后端之间的实时数据交换。
264 0
|
6月前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
10月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
594 45
|
9月前
|
弹性计算 Java 数据库
Web应用上云经典架构实战
本课程详细介绍了Web应用上云的经典架构实战,涵盖前期准备、配置ALB、创建服务器组和监听、验证ECS公网能力、环境配置(JDK、Maven、Node、Git)、下载并运行若依框架、操作第二台ECS以及验证高可用性。通过具体步骤和命令,帮助学员快速掌握云上部署的全流程。
205 1
|
9月前
|
安全 应用服务中间件 网络安全
实战经验分享:利用免费SSL证书构建安全可靠的Web应用
本文分享了利用免费SSL证书构建安全Web应用的实战经验,涵盖选择合适的证书颁发机构、申请与获取证书、配置Web服务器、优化安全性及实际案例。帮助开发者提升应用安全性,增强用户信任。
|
10月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
10月前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
在Web开发中,前后端的高效交互是提升用户体验的关键。本文通过一个基于Flask框架的博客系统实战案例,详细介绍了如何使用AJAX和Fetch API实现不刷新页面查看评论的功能。从后端路由设置到前端请求处理,全面展示了这两种技术的应用技巧,帮助Python Web开发者提升项目质量和开发效率。
205 1

热门文章

最新文章