REST 入门介绍
dudu的 HttpClient + ASP.NET Web API, WCF之外的另一个选择 讨论的人很多,说明RESTful API也开始在.NET 社区中得到重视,其中的回复有很多对REST不正确的观点。REST(REpresentational State Transfer)的概念提出已超过10年,不知不觉间已成当今设计开放式API的主流。或许大家手边的.NET系统整合都还是使用WCF(甚至Web Service)进行跨主机沟通,但是当微软在ASP.NET MVC 4 Beta里也开始推广REST架构的ASP.NET Web API。如果没有先了解 RESTful,那接下去的内容还真有点硬,像是专业名词,例如,你在 ASP.NET Web API 文件中可以看到大量的 Resource (资源) 这个单字,URI 我还能理解,跟 Resource 有什么关系?
关于REST及RESTful的概念,已有不少文章介绍,这里整理几篇我觉得不错的参考:
- 维基百科的定义: REST
- 什么是REST跟RESTful? REST理论的中文详述,其中你可以了解到WCF Restful属于RPC 样式的 Web 服务,ASP.NET Web API属于RESTful Web 服务。
- 深入浅出REST InfoQ的专文介绍,文中甚至有Roy T. Fielding当年REST博士论文的中文翻译链接。另外值得一提的,大家可能没听过Roy Fielding的大名,但如果得知他是HTTP规格的主要作者及Apache HTTP Server项目的发起人之一,应该不会有人怀疑他在Web技术领域的分量。
上面的文章建议大家认真的读一下,这里我们简要的介绍下REST 做入门介绍,理解整个 REST 能让我们在 ASP.NET Web API 的路上更顺畅。
REST是什么?
REST ( REpresentational State Transfer ),State Transfer 为 "状态传输" 或 "状态转移 ",Representational 中文有人翻译为"表征"、"具象",合起来就是 "表征状态传输" 或 "具象状态传输" 或 "表述性状态转移",不过,一般文章或技术文件都比较不会使用翻译后的中文来撰写,而是直接引用 REST 或 RESTful 来代表,因为 REST 一整个观念,想要只用六个中文字来完整表达真有难度。
REST 一词的出于《Architectural Styles and
the Design of Network-based Software Architectures》论文,我们先简单从标题来看,它应该是一种架构样式 (Architectural Styles) 与软件架构 (Software Architectures),而且是以网络 (Network-based) 为基础,重点就是:
- 架构样式 (Architectural Styles)
- 软件架构 (Software Architectures)
- 网络 (Network-based) 为基础
REST 本身是设计风格而不是标准。REST 谈论一件非常重要的事,如何正确地使用 Web标准,例如,HTTP 和 URI。想要了解 REST 最好的方式就是思索与了解 Web 及其工作方式。如果你设计的应用程序能符合 REST 原则 (REST principles),这些符合 REST 原则的 REST 服务可称为 "RESTful web service" 也称 "RESTful Web API"。"-ful" 字尾强调它们的设计完全符合 REST 论文里的建议内容。
资源 RESOURCE
在 REST 中的资源 (Resource) 代表整个网络上的资源。网络上提供了各式各样的资源,而网络上的资源由 URI (统一资源标识符,Uniform Resource Identifier) 来提供。
回想,你如何连上我的 博客,你可能通过浏览器直接输入 www.cnblogs.com/shanyou 此域名来到达首页,也能用书签或网络上的链接,经点击后来连上我的博客。然后,你想看这一篇名为「REST 入门介绍」的文章,所以以你接下去点击这文章的标题连结,接去下阅读。我们简易了解一下整个流程:
- 通过URL ( http://www.cnblogs.com/shanyou ) , Client 向 http://www.cnblogs.com/shanyou 发出请求
- www.cnblogs.com/shanyou 收到请求,回应首页给 Client
- Client 又点击 REST 文章连结 (假设是 http://www.cnblogs.com/shanyou/archive/2011/06/30/2095018.html) 向 http://www.cnblogs.com/shanyou发出archive/2011/06/30/2095018.html 此篇文章的请求
- www.cnblogs.com/shanyou 收到请求,响应 REST 文章内容给 Client
Client 的通过 URI 来获取资源的具体象征 (Representational)。Client 取得这些具体象征使这些应用程序转变其状态 (以 浏览器而言,取得 HTML、CSS、JavaScript … 来生成界面),随着不断取得资源的具体象征, Client 端不断地改变其状态,这样不断的反复 (iterations ) 过程就是所谓的 Representational State Transfer。
使用 WEB 标准
上述是最接近日常的范例,这些行为在 HTTP 规范中称之为 GET,也就是通过URL 来 GET 我想要的资源。另一常用的例子是填写表单,例如,登入表单,我想进行登入动作,就必须先发送账号与密码给某一资源,此资源会验证你所传送的数据是否正确, 再进行后续动作。我们发送信息给资源的行为在 HTTP 规范中称之为 POST。
在 HTTP/1.1 RFC 2616第 5.1.1 Method 一节定义了八大类 HTTP 方法,除了我们常用的 GET 与 POST 之外,在 REST 中常用的还有 PUT 与 DELETE。此 GET, POST, PUT, DELETE 正好可以对应我们 CRUD (Create, Read, Update, Delete) 四种数据操作。
HTTP Method 与 CURD 数据处理操作对应 |
||
HTTP方法 |
数据处理 |
说明 |
POST |
Create |
新增一个没有id的资源 |
GET |
Read |
取得一个资源 |
PUT |
Update |
更新一个资源。或新增一个含 id 资源(如果 id 不存在) |
DELETE |
Delete |
删除一个资源 |
RESTFUL WEB SERVICE
RESTful Web Service (又称 RESTful Web API) 是一个使用 HTTP 并符合 REST 原则的 Web 服务。我们知道,通过 URL 可以传送 GET 请求,在 表单指定 method="GET|POST" 来送出请求。但我们要处理 PUT 或 DELETE 的请求呢?通过 RESTful 我们可以简单 URI 来定义资源并和 HTTP 方法配合使用。
Resource 与 HTTP 方法的对应 |
|||||
资源 |
资源说明 |
GET |
PUT |
POST |
DELETE |
http://www.cnblogs.com/Products/ |
Products是一组资源集合 |
列出 该组资源集合中每个资源的详细信息 |
更新 当前整组资源 |
新增 或附加一个新资源。该操作传回新资源的URL |
删除 整组资源 |
http://www.cnblogs.com/Products/1 |
Products/1是单个资源 |
取得 指定的资源的详细信息 |
更新 或新增指定的资源 |
新增 或附加一个新元素 |
删除 指定的元素 |
以上表格有没有很像我们一般在对数据库表格的操作顺序,进入一个 Table 的数据首页 (通常是列表),此页面会有「新增、更新、删除、详细」等连结,你想进行什么操作,就点那一个连结。
在 RESTful 每个资源有自己独立的 URI, Client 从资源集合或单个资源开始进入,不管是资源集合或单个资源,我们都能与 HTTP 方法配合使用,例如,GET 下载,PUT 更新,POST 新增,DELETE 删除。
ASP.NET Web API 是一个框架(framework),能让你在 .NET Framwork 之上架设 HTTP 服务 (HTTP Services)。ASP.NET Web API 是 .NET Framework 上构建 RESTful 应用程序的理想平台。
在 Julie Lerman's 的 How I see Web API 一文中,用了一张图来简明说明 Web API:
相关推荐
本入门教程将深入探讨REST的基本概念、RESTEasy框架的使用以及如何编写REST服务。 首先,我们来看REST的核心原则: 1. **统一接口**:REST强调的是接口的一致性,使得任何客户端都能通过通用接口与服务端交互。...
REST入门知识及实例开发,涵盖REST设计原则,资源识别方法,在Jersey下开发RESTful webservice实现转账业务,包括服务端,客户端源码,详细阐述HTTP的4个请求方法(GET,POST,PUT,DELETE)在REST中的应用,使你...
本代码源自转自【http://www.lifeba.org/arch/restlet_develop_application_component_2.html 】但有改动,主要改动有: 1. 修改了web.xml的段,使工程既可以访问rest服务,又可以访问普通的页面资源,不用再像原...
REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,...
**Django REST Framework入门教程** Django REST Framework(简称DRF)是一个强大的、灵活的、用于构建Web APIs的工具包,它基于Python和Django框架。这个入门教程将引导你了解如何利用DRF来创建高效且易于理解的...
【描述】:在MyEclipse中创建RESTful Web服务的步骤并不复杂,适合初学者快速入门。我们将通过一个实际的例子,从创建项目、定义服务接口到测试运行,一步步讲解整个过程,帮助开发者理解REST服务的工作原理及其在...
本文将深入探讨这两个概念以及如何通过一个入门实例来理解它们。 Spring MVC(Model-View-Controller)是 Spring 框架的一部分,用于构建Web应用程序。它遵循MVC设计模式,有助于分离业务逻辑、数据处理和用户界面...
在这个“java rest简单实例,新手入门”的项目中,你将学习如何使用Java来创建RESTful API。 首先,我们需要理解REST的基本概念。REST的核心是资源,每个资源都有一个唯一的URI(统一资源标识符),通过HTTP方法来...
首先,在快速入门章节中,教程引导我们如何搭建一个项目,包括创建虚拟环境、安装Django和Django-REST-framework、创建项目以及APP,最后建立数据库迁移和超级管理员。这是进行Django REST API开发的基础准备工作。 ...
总的来说,"flowable-boot-rest"项目为开发者提供了一个快速入门Flowable REST API的平台,结合Swagger工具,使得理解和使用Flowable的工作流服务变得直观和高效。无论你是希望集成Flowable到现有系统,还是想要学习...
**Django REST 框架与 React 快速入门** Django REST 框架(DRF)是基于 Django 的一套强大的工具集,用于构建 Web API。它使得开发者能够快速地构建符合 RESTful 风格的、健壮的、高性能的 API。另一方面,React ...
在这一步中,我们会改进...AngularJS初学者看到中文入门教程,却无法使用GitHub下载到配套的Angular的Seed工程,因此学习曲线大。在此专门下载配套工程打包分享给大家。 本集教程地址: http://www.angularjs.cn/A00e
6. **安全考虑**:虽然这个例子是入门级的,但在实际应用中,还需要考虑安全性,比如使用Spring Security进行身份验证和授权,防止未授权访问。 总结起来,本例子通过Spring框架展示了如何开发一个简单的REST服务。...
Django REST Framework(DRF)是基于Python的Django Web框架的一个强大扩展,专为构建Web API而设计。本讲义全面涵盖了这个框架的核心概念、功能以及最佳实践,旨在帮助开发者快速掌握如何利用DRF创建高效、可维护的...
**Django REST框架入门** Django REST框架(Django Rest Framework,简称DRF)是一个强大的、灵活的用于构建Web API的工具集,它基于Python语言和Django Web框架。本阶段的学习将带你深入理解如何使用DRF来创建高效...
什么是REST_如何用NodeJS开发REST_API_【JavaScript全栈入门教程7】