说说自己对RESTful API的理解
REST不是英文上的rest单词,其英文缩写为presentational State Transfer ,直译为表现状态转移,咋看起来很学术,不懂,其实不用去死抠这个词的意思。REST是一种约束和架构(设计),符合这个风格的都算API。如果实在想了解REST ,直接看提出REST的那篇论文。
知乎上有句话总结的很好了,URL定位资源用HTTP动词(GET POST DELETE)描述操作。
其实只要理解以下几个原则就可以了:
1.提供资源定位
一般在计算机系统中,client和server通信交换信息,发出Action来完成任务。假设在一个to-do-list的Web应用中,客户需要添加或者修改to-do-list,如果用非
REST的方法是这样的:
www/changeTodoList.php?item=35&action=changeTitle&title=new_title
以上的URL是向Web API发出修改的指令,之后跟着的是一些修改的参数。但是,changeTodoList.php表述的不是一个事物,也不是一个资源(resource),在REST的架构风格中,服务器只提供资源(only offer resources), 资源表述的是C/S通信中的概念(即名词)。以下就是REST的方式:
www/todolists/7/items/35/
以上的URL在语义上表现就不是一些系列命令了,只仅仅是资源的URL地址。
2.只交换自描述(self-descriptive)的消息
考虑以下场景:
/search-results?q=todo
/search-results?page=2
/search-results?page=3
以上的Web API,第一个代表搜索todo的结果,第二行todo结果的第二页,之后类推。但是单独从第二行的参数就无法看出这API是干嘛的,什么的第二页?不得而知。
以下是RESTful的设计:
/search-results?q=to-do
/search-results?q=todo&page=2
/search-results?q=todo&page=3
这样单独每行都能解释自身的意思,也就是自圆其说了。
3.通过连接(Links)链接资源(resources)
假设App向server端请求你的to-do-list:
/todolists/7/
{ "name": "My to-dos",
"items": [35, 36]
}
返回了以上的json串,item号数为35,36,但是App开发者应该从哪里通过item号来获取API呢?没办法,得通过提供的文档来向相关的Item查找Web API来查。
以下是RESTful的设计: 
todolists/7/
{
"name": "My to-dos",
"items": ["/todolists/7/items/35/", "/todolists/7/items/36/"]
}
上面json直接返回相关item的URL,App开发者直接就可以获取字符串发送请求了。
只要遵循以上几个原则,那么设计出来的API就是RESTful的。
references: https://www.zhihu.com/question/28557115
说说自己对RESTful API的理解的更多相关文章
- 网上整理的对于Rest和Restful api的理解
		一.什么是Rest? REST不是"rest"这个单词,而是几个单词缩写 -- REpresentational State Transfer 直接翻译:表现层状态转移,但这个翻译 ... 
- RESTful API的理解
		技术交流的时候遇到了这样的一个问题,被问及开发中用到的是不是Restful API,我说的是,我们现在用到的不属于完全是Restful API.因为我了解到的Restful API,是 通过具体的UR ... 
- 说说自己对RESTful API的理解s
		REST不是英文上的rest单词,其英文缩写为presentational State Transfer ,直译为表现状态转移,咋看起来很学术,不懂,其实不用去死抠这个词的意思.REST是一种约束和架 ... 
- 深入理解 RESTful Api 架构
		转自https://mengkang.net/620.html 一些常见的误解 不要以为 RESTful Api 就是设计得像便于 SEO 的伪静态,例如一个 Api 的 URL 类似于 http: ... 
- 理解Restful api的意义
		RESTful API 只是API的设计规范或者是一套设计理论. 单就URL和Method这两个点,你可以这样理解: URL 是用来唯一标示一个互联网资源的,而 Method 是用来标识当前请求对该资 ... 
- 理解restful 架构 && RESTful API设计指南
		restful是前端和后端接口中都会使用的设计思想. 网站即软件,我们也常说的webapp,这种互联网软件采用的是“客户端/服务器”模式,建立在分布式体系上. 网站开发,也可以完全采用软件开发的模式, ... 
- restful api理解
		REST -- REpresentational State Transfer 直接翻译:表现层状态转移. 首先要明确一点:REST 实际上只是一种设计风格,它并不是标准. 0. REST不是&quo ... 
- 我是如何根据豆瓣api来理解Restful API设计的
		1.什么是REST REST全称是Representational State Transfer,表述状态转移的意思.它是在Roy Fielding博士论文首次提出.REST本身没有创造新的技术.组件 ... 
- 我所理解的Restful API最佳实践
		一直在公司负责API数据接口的开发,期间也遇到了不小的坑,本篇博客算是做一个小小的记录. 1. 不要纠结于无意义的规范 在开始本文之前,我想先说这么一句:RESTful 真的很好,但它只是一种软 ... 
随机推荐
- BZOJ.2002.Bounce 弹飞绵羊(LCT)
			题目链接 从一个点只能往后跳,即后继状态只有一个,那么拿nxt[x]做fa[x]啊!这样就成了一棵树,从每个点开始的答案是它到所在树的根节点的距离. nxt[]的更改即动态修改树边,用LCT即可. 这 ... 
- SpringMybatisMapper
			<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" ... 
- 本地搭建Wordpress博客网站(Windows)
			最近在写一些web功能测试的一个主题分享,里边有一个分类是数据库测试,那么数据库测试有几个点的方法,其中有一个是学会看数据库的日志.由于公司内部的数据库日志我们测试人员暂时不开放查看,所以打算自己在本 ... 
- delphi获取文件的创建/修改时间、按时间删除指定文件下的文件
			uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrl ... 
- android:制作 Nine-Patch 图片
			它是一种被特殊处理过的 png 图片,能够指定哪些区域可以被拉伸而 哪些区域不可以. 那么 Nine-Patch 图片到底有什么实际作用呢?我们还是通过一个例子来看一下吧.比如 说项目中有一张气泡样式 ... 
- centos清除dns cache.
			# /etc/init.d/nscd restart # service nscd restart # service nscd reload # nscd -i hosts https://www. ... 
- 【T02】理解子网和CIDR的概念
			1.IP地址分为5类,A.B.C.D.E,它们的前缀分别是: A:0 网络个数2^7,主机个数2^24,大概1千6百万 B:10 网络个数2^14,大概1万6千,主机个数2^16,大概6万5千 C:1 ... 
- Shell获取某目录下所有文件夹的名称
			查看目录下面的所有文件: #!/bin/bash cd /目标目录 for file in $(ls *) do echo $file done 延伸的方法,查看目录下面的所有目录 #!/bin/ba ... 
- MySql之修改操作与进阶
			一:更新特定行 UPDATE tableName SET 列名 = 值,列名 = 值... WHERE 条件; 二:使用子查询更新数据 UPDATE tableName SET 列名 = SELECT ... 
- sql随机查询数据语句(NewID(),Rnd,Rand(),random())
			SQL Server: 代码如下 复制代码 Select TOP N * From TABLE Order By NewID() NewID()函数将创建一个 uniqueidentifier 类型的 ... 
