RestfulApi 学习笔记——简单介绍(一)
前言
什么是restapi?
直接看:http://www.ruanyifeng.com/blog/2014/05/restful_api.html
阮一峰的blog,即可明白,下面是一些例子,增强理解。
正文
例子一 资源链是箱子
比如说我们要得到某个用户,我们可能这样写:api/getusers
这样就不符合了,因为操作动作让请求方式替代。
比如说get 请求就表示是获取users,那么就不需要写get,那么可以这样写:api/getusers 然后get请求。
这个怎么说呢?也就是说把资源链当做资源链,而不是语义,说简单点就是资源链指向的是某个资源,而不是某个操作。
那么如果获取方式不同怎么写呢?比如说查询按照某个字段从小到大排序,那么应该如何写呢?我们需要明白查询从小到大排序是条件,而不是动作。
那么可以作为参数来传递api/getusers?orderby='xxx'
例子二 给箱子取一个好的名字
api/users 那么你能写成api/u,因为这样不具备语义化
例子三 不要给箱子定义多个名字
比如说我们获取到多个用户,那么我就使用api/users,然后我获取某个用户我就去获取api/user/1。
这样其实是没有必要的,api/users 表示的就是users 这个资源箱。使用api/user/1 从新给箱子又改了一个名字,我觉得这样难以维护,
而且这样做,不能体现这是一条资源链,因为user 并不能表示这个资源箱的名字,而是一个复数,是一个集合来表示。
例子四 给箱子里面套箱子,结构化
比如说查询某家公司下面的某个员工?
/api/employees/1 这样写似乎没有什么问题,但是呢?这样写还是存在某些问题的,因为这样没有体现好资源结构。
如果这样写是不是更好,/api/companies/1/employees/1,这样写是否更好一点?这样在api层面暴露出了更多的信息,比如说知道了员工是在某个公司下面。
这样体现了一个很好的结构性。

例子五 不要让restful作为约束
比如说我们可能看到这样的api,/api/users/allcount,这样写是不符合restful api的,表示获取users的数量,因为这不能把allcount 作为一个箱子,因为他的来源于users,users才是一个资源箱。
那么这样写是否正确呢?当然是不符合的了,但是有存在的合理性。因为如果这样写/api/users?search='allcount',这样写当然也是错误的了,因为/api/users获取的是users资源,得到的结果却是一个数量,
而且这样写让我们的代码混乱不堪。当然我们也可以提取出去,/api/statistics?name='users'&&result='allcount',这样写也会混乱不堪。那么就把这个当做一个箱子的特殊的孔,其合理性也很高。
所以说不能把restful完全作为一种不可抵触的东西,主要是看这个资源箱的结构是怎么样的。就像这个例子一样,在这个api接口资源库中,在users打个孔,真的没啥的,就跟一个机箱一样,里面存着一些外设
usb接口,如果没有这些接口的话,那么其扩展性太差了。
结
简单的做个介绍,后续持续不断更新。
RestfulApi 学习笔记——简单介绍(一)的更多相关文章
- ASP.NET Core Web开发学习笔记-1介绍篇
ASP.NET Core Web开发学习笔记-1介绍篇 给大家说声报歉,从2012年个人情感破裂的那一天,本人的51CTO,CnBlogs,Csdn,QQ,Weboo就再也没有更新过.踏实的生活(曾辞 ...
- JMeter学习工具简单介绍
JMeter学习工具简单介绍 一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态 ...
- IIC驱动学习笔记,简单的TSC2007的IIC驱动编写,测试
IIC驱动学习笔记,简单的TSC2007的IIC驱动编写,测试 目的不是为了编写TSC2007驱动,是为了学习IIC驱动的编写,读一下TSC2007的ADC数据进行练习,, Linux主机驱动和外设驱 ...
- linux视频学习(简单介绍)20160405
看一周学会linux系统的学习笔记. 1.linux系统是一个安全性高的开源,免费的多用户多任务的操作系统. 2.linux工作分为linux系统管理员,linux程序员(PC上软件开发,嵌入式开发) ...
- 图解HTTP学习笔记——简单的HTTP协议
简单的HTTP协议 前言 最近在学习Web开发的相关知识,发现<图解HTTP>这本书通俗易懂.所以花时间学习这本书,并记录下学习笔记. 如上图,我们每天都在浏览网页,一般我们都是在浏览器地 ...
- flowable学习笔记-简单流程概念介绍
1 Flowable process engine允许我们创建ProcessEngine 对象和使用 Flowable 的API ProcessEngine是线程安全的,他是通过 ProcessEng ...
- JavaScript学习笔记——简单无缝循环滚动展示图片的实现
今天做了一个简单的无缝循环滚动的实例,这种实例在网页中其实还挺常见的,下面分享一下我的学习收获. 首先,无缝滚动的第一个重点就是——动.关于怎么让页面的元素节点动起来,这就得学明白关于JavaScri ...
- elasticsearch学习笔记--原理介绍
前言:上一篇中我们对ES有了一个比较大概的概念,知道它是什么,干什么用的,今天给大家主要讲一下他的工作原理 介绍:ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户 ...
- 学习笔记——SQLite介绍
简介:Google为android的较大数据的处理提供了SQLlite, 他在数据存储.管理.维护.等各方面都相当出色功能也非常强大. 1.创建数据库 Android 为了让我们能够更加方便地管理数据 ...
随机推荐
- Java学习day06
[方法] [可以在不是main的方法中调用其他方法] [方法调用时的参数问题] [方法调用] [上面定义了两个class,实际上不推荐] [递归调用] [方法的返回值] [retu ...
- Excel双击“单元格”后,自动跳转到相关“工作表
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)If Target.Column = ...
- 【题解】CF1207E XOR Guessing
Link 这是一道交互题. \(\text{Solution:}\) 观察到猜的数范围只有\(2^{14}.\) 我第一次想到的方法是,我们可以确定系统选择的两个数的异或和,用这个异或和去穷举所有目标 ...
- DevOps元素周期表——1号元素 Gitlab
DevOps元素周期表--1号元素 Gitlab GitLab 是由 GitLab Inc.开发,一款基于 Git 的完全集成的软件开发平台(fully integrated software dev ...
- 为了省钱,我用1天时间把PHP学了!
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 你在通往架构师的路上吗? 程序员这个行业就像是在不断的打怪升级,突破每一阶段的瓶颈期 ...
- C#实现迭代器
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示.C#中使用IEnumerator接口实现,Java中使用Iterator接口实现,其中原理都差 ...
- HTML常用标签(下)
HTML常用标签(下) 1. 表格标签 1.1 语法 <table> <!--table定义表格--> <tr> <!--tr定义表格中的行--> &l ...
- 多测师讲解——python002.2练习题
# # 作业:第二天# ## # 1.求出1 / 1 + 1 / 3 + 1 / 5--+1 / 99的和 (1分之一+1分之三+1分支5....)# # 2.用循环语句,计算2 - 10之间整数的循 ...
- 苏州6617.9373(薇)xiaojie:苏州哪里有xiaomei
苏州哪里有小姐服务大保健[微信:6617.9373倩儿小妹[苏州叫小姐服务√o服务微信:6617.9373倩儿小妹[苏州叫小姐服务][十微信:6617.9373倩儿小妹][苏州叫小姐包夜服务][十微信 ...
- day44 Pyhton 数据库Mysql
内容回顾 什么是进程? 就是为了形容执行中的程序的一种称呼 它是操作系统中资源分配的最小单位 进程之间是数据隔离的,占用操作系统资源相对多 独立存在的 谈谈你对并发的理解 同时有多个任务需要执行,但是 ...