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的理解s的更多相关文章

  1. 网上整理的对于Rest和Restful api的理解

    一.什么是Rest? REST不是"rest"这个单词,而是几个单词缩写 -- REpresentational State Transfer 直接翻译:表现层状态转移,但这个翻译 ...

  2. RESTful API的理解

    技术交流的时候遇到了这样的一个问题,被问及开发中用到的是不是Restful API,我说的是,我们现在用到的不属于完全是Restful API.因为我了解到的Restful API,是 通过具体的UR ...

  3. 说说自己对RESTful API的理解

    REST不是英文上的rest单词,其英文缩写为presentational State Transfer ,直译为表现状态转移,咋看起来很学术,不懂,其实不用去死抠这个词的意思.REST是一种约束和架 ...

  4. 深入理解 RESTful Api 架构

    转自https://mengkang.net/620.html 一些常见的误解 不要以为 RESTful Api  就是设计得像便于 SEO 的伪静态,例如一个 Api 的 URL 类似于 http: ...

  5. 理解Restful api的意义

    RESTful API 只是API的设计规范或者是一套设计理论. 单就URL和Method这两个点,你可以这样理解: URL 是用来唯一标示一个互联网资源的,而 Method 是用来标识当前请求对该资 ...

  6. 理解restful 架构 && RESTful API设计指南

    restful是前端和后端接口中都会使用的设计思想. 网站即软件,我们也常说的webapp,这种互联网软件采用的是“客户端/服务器”模式,建立在分布式体系上. 网站开发,也可以完全采用软件开发的模式, ...

  7. restful api理解

    REST -- REpresentational State Transfer 直接翻译:表现层状态转移. 首先要明确一点:REST 实际上只是一种设计风格,它并不是标准. 0. REST不是&quo ...

  8. 我是如何根据豆瓣api来理解Restful API设计的

    1.什么是REST REST全称是Representational State Transfer,表述状态转移的意思.它是在Roy Fielding博士论文首次提出.REST本身没有创造新的技术.组件 ...

  9. 我所理解的Restful API最佳实践

    一直在公司负责API数据接口的开发,期间也遇到了不小的坑,本篇博客算是做一个小小的记录. 1. 不要纠结于无意义的规范    在开始本文之前,我想先说这么一句:RESTful 真的很好,但它只是一种软 ...

随机推荐

  1. eclipse 错误: 找不到或无法加载主类

    在src文件夹上移除Source Folder,再点右键-Build Path-Use as Source Folder,重新进行编译,一切正常了.

  2. SWIFT国际资金清算系统

    SWIFT又称:“环球同业银行金融电讯协会”,是国际银行同业间的国际合作组织,成立于一九七三年,目前全球大多数国家大多数银行已使用SWIFT系统.SWIFT的使用,使银行的结算提供了安全.可靠.快捷. ...

  3. 在Android项目中启用Java 8的部分特性--Lambda & Method References

    Android N发布时同时发布了一个新的编译工具Jack(AS2.1+支持),基于Jack我们可以使用Java 8 的部分特性,在低版本机器上能使用的更少,同时Jack也有诸多不完善,工具链的改变难 ...

  4. awk使用入门

    1.基本用法 awk '{pattern + action}' {filenames} pattern 表示 AWK 在数据中查找的内容 action 是在找到匹配内容时所执行的一系列命令. patt ...

  5. vs2008打包公布程序

    vs2008打包公布程序 一vs2008中新建 安装项目,确定(新建 安装向导 也能够) 二.加入内容 1.加入主要内容: 应用程序目录=>右键=>加入=>文件,找到须要的文件,包含 ...

  6. 关于linux内存管理

     Linux的内存管理主要分为两部分:物理地址到虚拟地址的映射,内核内存分配管理(主要基于slab). 物理地址到虚拟地址之间的映射 1.概念 物理地址(physical address) 用于内存芯 ...

  7. Linux安装应用程序对程序文件owner/group和执行程序帐号设置的规范做法

    本文原文链接:http://blog.csdn.net/bluishglc/article/details/24384189 转载请注明出外! 本文面向的是在server环境下对已编译.自解压应用程序 ...

  8. PHP Strict standards:Declaration of … should be compatible with that of…(转)

    今天把原来一份很老的PHP代码导入到了PaaS上,出现了许多Strict standards:Declaration of … should be compatible with that of…这样 ...

  9. ASP.NET-FineUI开发实践-2

    FineUI好处之一在于No JS,这里的No JS并不是不使用JS,JS对于ASP.Net是必不可少的,只是FineUI把大部分JS封装,如果想用,后台提供了很多方法返回JS,Get...Refer ...

  10. Avast注册以及更新

    昨天无聊在网上看Avast,然后下了玩. Avast有三种版本,免费版,网络版,高级版. 下了个高级版,在贴吧和论坛找激活码,发现大部分都没用,最后找了一个许可文件 关于Avast的注册,有在线和离线 ...