你了解真正的 restful API 吗?
本文原创地址,博客
:https://jsbintask.cn/2019/03/20/api/restful-api-best-practices/(食用效果最佳),转载请注明出处!
前言
在以前,一个网站的完成总说“all in one”,页面,数据,渲染全部在服务段完成。这样做的最大的弊端就是后期维护,扩展极其痛苦,开发人员必须同时具备前后端只是,于是慢慢的后来兴起了 前后分离的思想
后端负责 数据编造,而前段时间只负责数据渲染,前段静态页面调用指定 api 获取到有固定格式的数据,在将数据展示出来,这样呈现给用户的就是一个“”董涛“的过程,而关于 api 这部分的设计则成了一个问题,如何设计一个便于理解,容易使用的 api 则成了一个问题,
而 所谓 restful 就是用来规范我们的 api 的一种约束。、
介绍
rest 就是 Representational State Transfer 三个单词的缩写,由 Roy Fielding 于2000 年论文中提出,它代表着分布式服务的架构风格,而如果想你的 api 被称为 restful api ,值要遵循其规定的约束即可。
rest 设计原理
1、客户端 - 服务端:通过将用户 UI 于数据存储分开,我们可以简化服务器组件来提高跨多个平台的用户界面的可移植性并提高可伸缩性,它可以比表现成前后分离的思想。
2、无状态:从客户端到服务器端的每个请求必须包含理解请求所需的所有信息,并且不能利用服务器上任何的上下文,这表示你应该可能的避免使用 seeeion,由客户端自己标识回话状态。(token)
3、规范接口:rest接口约束定义,资源识别,请求动作,响应信息,它表示通过 uri 标出你要操作的 资源 ,通过请求 (http method)标识执行的操作,通过返回的状态码来表示这次请求的执行结果,
4、可缓存:缓存要求将对请求的响应中的数据隐式或显示标记为可缓存或不可缓存,如果响应是可缓存,则客户缓存有权重用该响应数据以用于以后的等效请求,它表示 get 请求响应头中该表示有是否可缓存的头(Cache- Control)
uri 规范
资源的描述构成了 uri,它一般有以下约束:
1、使用名词:
如: user、student、class
http://api.example.com/class-management/students
http://api.example.com/device-management/managed-devices/(device - id)
http://api.exanple.com/user-management/users
http://api.example.com/user-management/users(id)
2、 http method 对应不同的请求动作(数据库或者业务逻辑)
GET:查询操作:
HTTP GET /device?startindex=0&size=20
无状态
是restful api 无状态有一些非常显著的有点;
1、无状态通过将 API 部署到各个服务器。有助于将 API 扩展到数百万并发用户,任何服务器都可以处理任何请求,因为没有与会话相关的依赖(集群)
2、无状态使得 RESTful API 不那么复杂,可以删除所有服务器端状态同步逻辑,(删除session,清理多余空间)
3、无状态 API 很容易缓存,特定软件可以通过查看该一个请求是都缓存 HTTP 请求的结果,从先前请求中获得状态的肯能会影响这个请求的可缓存性,这并不存在任何不确定性,它提高了应用程序的性能。
4、服务器永远不会忘记每个客户的身份,因为客户端会在每个请求中发送所有必要的信息。(携带 token)
那么无状态又要怎么实现呢?前面我们已经说过了,服务端不应爱保存session会话,这个工作全部交由 http 请求标识,而最常见的做法则是 使用 token。生成 token 可以考虑使用 jwt,oauth。
你了解真正的 restful API 吗?的更多相关文章
- (转载) RESTful API 设计指南
作者: 阮一峰 日期: 2014年5月22日 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). 因此,必须有一种统一的机制 ...
- Node.js实现RESTful api,express or koa?
文章导读: 一.what's RESTful API 二.Express RESTful API 三.KOA RESTful API 四.express还是koa? 五.参考资料 一.what's R ...
- Restful Api 最佳实践
Web APIs has become an very important topic in the last year. We at M-Way Solutions are working ever ...
- 基于轻量型Web服务器Raspkate的RESTful API的实现
在上一篇文章中,我们已经了解了Raspkate这一轻量型Web服务器,今天,我们再一起了解下如何基于Raspkate实现简单的RESTful API. 模块 首先让我们了解一下"模块&quo ...
- RESTful Api 身份认证安全性设计
REST是一种软件架构风格.RESTful Api 是基于 HTTP 协议的 Api,是无状态传输.它的核心是将所有的 Api 都理解为一个网络资源.将所有的客户端和服务器的状态转移(动作)封装到 H ...
- 深入理解 RESTful Api 架构
转自https://mengkang.net/620.html 一些常见的误解 不要以为 RESTful Api 就是设计得像便于 SEO 的伪静态,例如一个 Api 的 URL 类似于 http: ...
- 使用Flask设计带认证token的RESTful API接口[翻译]
上一篇文章, 使用python的Flask实现一个RESTful API服务器端 简单地演示了Flask实的现的api服务器,里面提到了因为无状态的原则,没有session cookies,如果访问 ...
- RESTful API 设计指南
转自:http://www.ruanyifeng.com/blog/2014/05/restful_api.html 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机. ...
- RESTful API URI 设计的一些总结
非常赞的四篇文章: Resource Naming Best Practices for Designing a Pragmatic RESTful API 撰写合格的 REST API JSON 风 ...
- Restful API
http://www.ruanyifeng.com/blog/2011/09/restful 参考资料:-------以网络为基础的应用软件的架构设计. Restful API的设计与实践 字数218 ...
随机推荐
- bugku sql2
sql注入2 200 http://123.206.87.240:8007/web2/ 全都tm过滤了绝望吗? 提示 !,!=,=,+,-,^,%
- linux学习笔记1:无操作系统时LED驱动
- WPF 解决无边框产生的相关问题
原文:WPF 解决无边框产生的相关问题 最大化: 在设置WindowStyle="None" AllowsTransparency="True"后,最大化会覆盖 ...
- python数据赋值后,修改新数据,原数据如何保证不被修改?
python中对象,赋值后是同一地址,如果是可变对象,对其中一个修改会影响到另一个,如果要生成完全新的对象,应使用deepcopyimport copydata1=copy.deepcopy(data ...
- C++-static作用(转)
C++中static的作用 C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用 ...
- 剑指offer 面试题43. 1~n整数中1出现的次数
leetcode上也见过一样的题,当时不会做 看了一下解法是纯数学解法就没看,结果剑指offer上也出现了这道题,那还是认真看下吧 对于数字abcde,如果第一位是1,比如12345,即计算f(123 ...
- 【新特性速递】F.doPostBack的说明文档
FineUIPro/Mvc/Core的下个版本(v6.1.0),我们对客户端JS函数 F.doPostBack 进行了增强,并增加说明文档. 如果你还没有查阅过FineUI的客户端文档,可以收藏下这个 ...
- bzoj 4196:[NOI2015] 软件包管理器 (树链剖分)
第一次做树剖 找同学要了模板 + 各种借鉴 先用dfs在划分轻重链并编号, install的时候就从查询的节点到根寻找标记的点有多少个,再用深度减去标记的点的个数,并把路径上所有点都标记 uninst ...
- 题解【CJOJ1071/UVA】硬币问题
P1071 - [Uva]硬币问题 Description 有n种硬币,面值分别为v1, v2, ..., vn,每种都有无限多.给定非负整数S,可以选用多少个硬币,使得面值之和恰好为S?输出硬币数目 ...
- SQL Server中使用msdb数据库的存储过程sp_delete_backuphistory和sp_delete_database_backuphistory来删除备份和恢复历史数据
根据微软文档对sp_delete_backuphistory存储过程的介绍,SQL Server在每次备份和恢复数据库后,会向msdb系统数据库的备份和恢复历史表写入数据,如果SQL Server经常 ...