浅谈RESTfulAPI
引导篇(RESTful API 是什么?)
REST 全称是 Representational State Transfer ,中文意思是表现层(编者注:通常译为表征)状态转化, 它首次出现在 2000 年 Roy Fielding 的博士论文中。 Roy Fielding 在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST 指的是一组架构约束条件和原则。"
REST 本身并没有创造新的技术、组件或服务,而隐藏在 RESTful 背后的理念就是使用 Web 的现有特征和能力, 更好地使用现有 Web 标准中的一些准则和约束。虽然 REST 本身受 Web 技术的影响很深, 但是理论上 REST 架构风格并不是绑定在 HTTP 上,只不过目前 HTTP 是唯一与 REST 相关的实例。
简单来说, RESTful 是一种 API 风格,重点!!是风格,不是什么规范。场景篇上面讲了这么多关于 RESTful 的知识。
下面我们来模拟使用 RESTful API 风格来定义几个对文章操作的 API 。GET获取文章详情 # 接口 api/articles/:id # 状态码 200 # 返回详情 { "id": "xxx", "content": "xxx", "author": "严家辉", "createTime": "2023-03-02 23:37:20", } 获取文章列表数据 # 接口 api/articles # 状态码 200 # 返回列表数据和总数 { "items": [ { "id": "xxx", "content": "xxx", "author": "严家辉", "createTime": "2023-03-02 23:37:20", } ], "total": 100 } POST新增文章 # 接口 api/articles # 状态码 201 # 返回新增数据的详情 { "id": "xxx", "content": "xxx", "author": "严家辉", "createTime": "2023-03-02 23:37:20", } PUT更新文章内容 # 接口 api/articles/:id # 状态码 200 # 返回更新后的详情 { "id": "xxx", "content": "xxx", "author": "严家辉", "createTime": "2023-03-02 23:37:20", } DELETE删除一篇文章 # 接口 api/articles/:id # 状态码 204 # No content 合起来看下
方法API用途 GETapi/articles/:id获取文章详情 GETapi/articles获取文章列表 POSTapi/articles新增文章 PUTapi/articles/:id更新文章 DELETEapi/articles/:id删除文章 RESTful 的核心思想就是,客户端发出的数据操作指令都是 动词 + 宾语 的结构。
用一句话来描述 RESTful API 就是URL 定位资源,用HTTP动词(GET ,POST ,PUT ,DELETE )描述操作。看URL 就知道要什么
看HTTP Method 就知道干什么
看HTTP Status Code 就知道结果如何
引知乎高赞回答 - 徐磊 使用 RESTful API 遇到的问题
可以先看看对用户的其他操作吧
方法API用途 GETapi/users/:id获取用户信息 GETapi/users获取用户列表 POSTapi/users新增用户 PUTapi/users/:id更新用户信息 DELETEapi/users/:id更新用户信息
看着好像没啥问题。
上面我们都在操作 users 资源,那用户的登录怎么使用 RESTful API ?但是 HTTP Method 里面压根没有一个叫登录的动词让我们直接操作 users 的登录。怎么办呢?
难道是使用 api/login ?
当然不行 login 已经是动词了,按照 RESTful API 的风格, URL 只能是用来表示资源主体 的名词?且推荐使用复数。
其实登录我们也是操作一个资源,这个资源就是 session 。
所以我们可以定义登录登出为
方法API用途 POSTapi/sessions登录 DELETEapi/sessions登出 优点提供简单的 URL 结构,可以更容易地理解和记忆。每个 API 专注做一件事,提高各种组合的可能性。 支持多种 HTTP 方法,如 GET 、POST 、PUT 和 DELETE ,可以更容易地实现不同的操作。
因此, RESTful API 可以提供一种简单、灵活的方式来构建 Web 服务,可以更容易地实现服务器端的性能优化,也可以更容易地实现跨域数据共享。缺点若一次需要操作多个资源,还需要多个请求 request,效能方面较差 网络上所有东西都是 资源 ,需要正确将资源抽象化,写出资源的URI ,并使用正确的动词(HTTP Method ) 去操作它。总结
RESTful 的核心思想就是,客户端发出的数据操作指令都是 动词 + 宾语 的结构。 用一句话来描述RESTful API 就是URL 定位资源,用HTTP动词(GET ,POST ,PUT ,DELETE )描述操作。
RESTful API 一般看是场景来使用的,因为毕竟只是一种 API 风格。
如果你的团队有自己的风格或者规范,那么按照团队的来就行,保持风格一致就是最好的,当然如果你想进行尝试尝试,推荐在新模块中进行使用,不然显得有点突兀。
就像下面这样 api/project/data-info/:id api/project/most-used-project-list
突然变成了 api/projects/:id api/projects
推荐新项目小项目可以尝试着使用一下 RESTful API , 对于我这个不太喜欢命名的人来说,RESTful API 是个不错的选择。参考文献https://www.zhihu.com/question/28557115 https://segmentfault.com/a/1190000020029993
全球第一大杀手心脑血管疾病心脑血管病发病率很高,致死致残率也非常高,那么日常生活中我们应该如何积极预防?一心脑血管病有哪些1脑血管脑中风(脑梗塞,脑出血)2心血管冠心病二心脑血管病的后遗症1脑中风,偏瘫或死
斯科尔斯卡塞米罗向前传球的能力让我惊讶,他早就该首发日前,斯科尔斯在BT体育的节目中谈到了曼联球员卡塞米罗,他夸赞了这名球员的传球能力。斯科尔斯在节目中这样表示卡塞米罗在阵容中有点进进出出,这对他的首秀来说是有一些困难的地方在的。我
改革开放下的世界之窗堪称一个世界奇迹头条创作挑战赛世界之窗是深圳的著名旅游景区,都说既然来到了深圳,不去世界之窗看看,就等于没有来过深圳。于是,我和我的弟弟一起去了世界之窗。这次我请客,弟弟做导游,我们玩得很开心,似
世界无车日,我要去福建这些最美步道,霸榜微信运动封面你有多久微信运动步数不达标了?又有多久没有和家人一起流汗了?你看,今天正好是世界无车日福建又终于摆脱了酷热所谓择日不如撞日让爱车熄火吧,把电动车钥匙也拔了带上家人,约上亲朋好友们一
韶关新丰打造全域旅游示范区,推动文旅产业高速发展金秋十月,稻谷飘香。自韶关中国农民丰收节主会场活动在新丰县举行后,前往新丰县开展乡村游的市民愈发增加。在黄金周长假期间,云髻山云天海等旅游景区游客络绎不绝,彰显新丰旅游产业活力。今
故事那年旅游时,和大我5岁的四川女人,发生一段浪漫情缘我叫王峰,25岁,在一家医药公司当销售,平时不是在出差,就是在出差的路上。好不容易有次休假,我给自己安排了一次四川之行,准备去那儿吃吃热辣的美食,看看可爱的熊猫,好好放松放松。只可
免费出游,政府补贴?当心低价旅游骗局世界那么大,我想去看看,外出游玩的热情并不是年轻人独有,许多不法分子利用国庆旅游黄金周,以不合理的低价甚至免费组织旅游活动,吸引平日花费节俭的老年人参团。警惕!不正规的低价旅游,往
从今天开始,你可以用支付宝给微信转账啦微信支付宝,自诞生之日起便势不两立,仿佛有不共戴天之仇,两者是不相同的。但是由于有关部门的从中斡旋,双方逐渐开始让步,并取得了突破性进展。今天(10月16日),笔者通过支付宝,已经
高人气家庭影院好物盘点,大屏投影就选这几款现在去影院的人少了,毕竟疫情没有过去,风险还是存在的。并且看电影的成本也不低,两个人看个电影,总得奖金150元,因此少去可以省钱。不过如果你是影院爱好者,其实一次性的投资,在家安装
热水器哪个牌子好?全球十大良心品牌推荐,买到就赚头条创作挑战赛现代家电中,热水器是最常用到的部分,然而古老的热水器形态已经被淘汰了。现代热水器不仅能24小时轻松供水,还不会有安全问题和电费消耗过大的问题。那么你知道,新时代都有哪
没有规矩的家庭,比贫穷更可怕(值得收藏!)好的家风,才是一个家庭最宝贵的财富!孟子言无规矩,不成方圆。世间万物,皆有规矩,规矩,是一种准则,更是一种分寸。正所谓国有国法,家有家规,无论是国家还是个人都离不开规矩。人若没有规