你了解真正的 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 ...
随机推荐
- 在vue中使用swiper4.x
需求 :实现一个左右两边有边距的轮播图vue+swiper4 轮播图左右两边含有上一张和下一张的一部分 先安装swiper: 1.npm install swiper 安装swiper 2.在入口 ...
- 跨站点脚本攻击XSS
来源:http://www.freebuf.com/articles/web/15188.html 跨站点脚本攻击是一种Web应用程序的攻击,攻击者尝试注入恶意脚本代码到受信任的网站上执行恶意操作.在 ...
- 题解 CF712C 【Memory and De-Evolution】
看到题我第一反应就是while循环 但是我竟然想正着推,失败,卡了十几分钟 后来我回来看到第三组测试数据 想到倒推 但是没坚持 于是我又卡了很久 过会我又回来想 AC了... 这个故事告诉我们,要努力 ...
- jQuery jqgrid
1.写div <div class="ibox-content"> <div class="jqGrid_wrapper"> <! ...
- normalization, standardization and regularization
Normalization Normalization refers to rescaling real valued numeric attributes into the range 0 and ...
- java基础(五)之static关键词的作用
static关键词的作用 1.静态成员变量的语法特定2.静态函数的语法特定3.静态代码块的语法特定 定义静态成员变量 Person.java class Person{ static int a; } ...
- (ghrd)pio设置
设置中是下降沿,边沿触发.
- mysql 实践(例题)
MySQL安装见本博 安装成功后,开始菜单中找到 “MySQL 8.0 Command Line Client” 进行启动(启动后,可直接输入MySQL密码) 1. create database 数 ...
- koa2第一天
router.get("/hello",async(ctx )=>{ const a=await new Promise(reslove=>reslove(123)) ...
- 「hdu 4845 」拯救大兵瑞恩 [CTSC 1999](状态压缩bfs & 分层图思想)
首先关于分层图思想详见2004的这个论文 https://wenku.baidu.com/view/dc57f205cc175527072208ad.html 这道题可以用状态压缩,我们对于每一把钥匙 ...