学习RESTful API

总是见到文章有提到RESTful API的,却不知道是什么东西,找到这篇文章,觉得讲得不错,就转载到这里来吧。

另外也有一篇文章也不错,发个链接:白话REST-识别真假REST

----------------------

前几日,有一小哥突然问我:陈陈,你会RESTful API吗?我说:不会呀,他说:那我教你好了。然后我就把该小哥拉入“黑名单”了,理由是唱你妹的小星星。然后去深入的学习了一下REST相关的东西。

RESTful API对我并不是一个全新的像是突然蹦出来的词汇,我印象中工作上出现过好几次,但是每次我都没有真正理解这个东西。我不知道什么样的接口类型可以称得上 是一种RESTful API,不知道RESTful API好在哪儿?那么今天这篇文章就是用来解决我的这些困惑的。要声明的是我只会站在前端使用者的角度来说说RESTful API看起来的样子,至于后端如何实现RESTful API接口的事我则不会涉及。

先从Web Service说起。Service就是提供可利用的资源,那么再加上Web这张网就可以对资源利用得到极大延伸,不在局限于你的本地或四邻。这时就应运 而生一种信息交换协议——SOAP(简单对象访问协议,Simple Object Access Protocol)。SOAP有着严格的协议,内容至今也基本齐全,然而随着时间的推进,它的弊端也逐渐暴露出来。SOAP消息基于很老的XML格式,显 得厚重,同时支持多种传输协议如HTTP、TCP/UDP等等,其内容涉及封装以及状态维持等等,总而言之,言而总之,就是它的复杂程度已经违背了起初设 计Web Service的简明原则了,所以在2000年Roy Thomas Fielding提出了REST(Representational State Transfer)架构。算是打响改善的第一枪。如果一个架构符合REST原则,就称它为RESTful架构。

通过对比SOAP和RESTful API的不同点,大致可以让我们了解到RESTful API的样子。

首先SOAP是一种严格的协议,而REST却并非协议,而是一种指导原则。而我个人认为它们最大的不同点在于SOAP是基于事务,而RESTful API是基于资源,然后利用HTTP的方法(GET、POST、PUT、DELETE)来表征行为。

一个SOAP接口可能如下:
GET http://www.example.com/getBook
POST http://www.example.com/addBook
POST http://www.example.com/updateBook
POST http://www.example.com/deleteBook

而对应的RESTful接口可能如下:
GET http://www.example.com/book
POST http://www.example.com/book
PUT http://www.example.com/book
DELETE http://www.example.com/book

以上接口的作用依次为获取书籍、添加书籍、更新书籍、删除书籍,你会发现SOAP提供的接口基本是以动词加名词结尾,是基于做什么事的,而 RESTful风格的接口则是名词结尾,把服务看成资源,然后完全利用HTTP的请求方法来做行为判断。SOAP接口返回XML格式,而RESTful API没有明确应答的格式要求。因为RESTful API只针对HTTP使用设计,所以他能更好的适用于浏览器,以及js的httpRequest请求。

RESTful API轻便的一个原因就是它是无状态的,所以它可以做缓存处理,增进性能,然而这也成为了它的一个短板。其实现在很多Web Service都不是随便可以滥用的,都需要身份验证,权限设置。如果把身份信息放在HTTP head里面,如何保证身份不被伪造?那么在这种情况下RESTful API就无法适用了,反而SOAP可以很好的适应。REST也在不断的完善,也许有一天他也可以做到状态维持,那么是否表明它也成了另一个SOAP呢?所 以没有什么东西是十全十美的,但是却有单一场景下十全十美的东西。

不管怎么说,RESTful API已经流传深远,对SOAP产生了巨大冲击。以上只是个人简单片面的理解,如果要想求真知,还望大家自行查阅资料,涨姿势。

时间: 2024-10-05 04:45:25

学习RESTful API的相关文章

Python自动化开发学习-RESTful API

RESTful API RESTful API 是一种面向资源编程,也叫表征状态转移(英文:Representational State Transfer,简称REST).认为网络上所有的东西都是资源,对资源的操作无非就是增删改查. 传统的方法 比如有个资产的页面,URL是 www.example.com/asset.要对它进行增删改查,可能使用不同的url来区分: www.example.com/addAsset :增加资产,一般是POST方法. www.example.com/delAsse

Node.js学习 - RESTFul API

REST Representational State Transfer (表述性状态转移), 是一组架构约束条件和原则.满足这些约束条件和原则的应用程序或设计就是RESTful. RESTful Web Services Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. 基于 REST 架构的 Web Services 即

flask开发restful api

在此之前,向大家说明的是,我们整个框架用的是flask + sqlalchemy + redis.如果没有开发过web,还是先去学习一下,这边只是介绍如果从开发web转换到开发移动端.如果flask还不是很熟悉,我建议先到这个网站简单学习一下,非常非常简单.http://dormousehole.readthedocs.org/en/latest/ 一直想写一些特别的东西,能让大家学习讨论的东西.但目前网上的很多博客,老么就按照官方文档照本宣读,要么直接搬代码,什么都不说明.我写这个系列的博客,

如何设计好的RESTful API之安全性

原文:http://blog.csdn.net/ywk253100/article/details/25654101 导读:安全是恒久的话题,对于基于WSDL和SOAP的Web Service,我们有WS-Security这样的安全规范来指导实现认证.授权.身份管理等安全需求.如何保证RESTful API的安全性呢. 关键词:RESTful API API安全性 前面讲了好的RESTful API具有的一些特征,本文会继续探讨RESTful API的安全性问题. InfoQ:安全是恒久的话题,

轻量级容器Docker+微服务+RESTful API

[宗师]李锟(44035001) 10:23:03感觉Docker这样的轻量级容器+微服务+RESTful API三者可以形成一个铁三角.这也代表了PaaS未来的发展方向. [宗师]李锟(44035001) 10:47:07 轻量级容器+微服务+RESTful API,这是未来的一个很明显的技术发展趋势.越早投入,就越早收获.同学们记住这些话,都做个有心人.一般人我不告诉他. [宗师]李锟(44035001) 10:47:47学习不要只考虑能不能解决明天的吃法问题,那样做是没有出息的.

Node.js实现RESTful api,express or koa?

文章导读: 一.what's RESTful API 二.Express RESTful API 三.KOA RESTful API 四.express还是koa? 五.参考资料 一.what's RESTful API 1.1 RESTful架构 要理解什么是RESTful API我们可以先看一下什么是RESTful架构. REST是Representational State Transfer的缩写,我们可以理解为它的含义是“表现层状态转化”,wikipedia是这样说的:“an archi

带你入门带你飞Ⅱ 使用Mocha + Chai + SuperTest测试Restful API in node.js

目录 1. 简介 2. 准备开始 3. Restful API测试实战 Example 1 - GET Example 2 - Post Example 3 - Put Example 4 - Delete 4. Troubleshooting 5. 参考文档 简介 经过上一篇文章的介绍,相信你已经对mocha, chai有一定的了解了, 本篇主要讲述如何用supertest来测试nodejs项目中的Restful API, 项目基于express框架. SuperTest 是 SuperAge

虚拟研讨会:如何设计好的RESTful API(转)

原文:虚拟研讨会:如何设计好的RESTful API? REST架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出.HTTP就是该架构风格的一个典型应用.从其诞生之日开始,它就因其可扩展性和简单性受到越来越多的架构师和开发者们的青睐.它必将得到更大的发展.一方面,随着云计算和移动计算的兴起,许多企业愿意在互联网上共享自己的数据.功能:另一方面,在企业中,RESTful API(也称RESTful Web服务)也逐渐超越SOAP成为实

Kylin Java RESTful API

最近在做大数据方面的开发, 学习研究了一段时间的kylin系统, 对于前端开发需要使用 RESTful API ,但是官网并没有提供详细的Java  API. 经过几天的看文档,最终写出了 Java 的API,不敢私藏,特分享与大家. 1 import java.io.BufferedReader; 2 import java.io.InputStream; 3 import java.io.InputStreamReader; 4 import java.io.OutputStream; 5