Flask-REST接口开发 + marshmallow
REST是Representational State Transfer三个单词的缩写,由Roy Fielding于2000年论文中提出,它代表着分布式服务的架构风格。
后端负责数据编造,而前端则负责数据渲染,前端静态页面调用指定api获取到有固定格式的数据,再将数据展示出来,这样呈现给用户的就是一个”动态“的过程。
REST设计原则
1 客户端-服务器:通过将用户UI与数据存储分开,我们可以简化服务器组件来提高跨多个平台的用户界面的可移植性并提高可伸缩性。 它可以表现成前后端分离的思想。
2 无状态:从客户端到服务器的每个请求都必须包含理解请求所需的所有信息,并且不能利用服务器上任何存储的上下文。 这表示你应该尽可能的避免使用session,由客户端自己标识会话状态。(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.example.com/user-management/users/
http://api.example.com/user-management/users/id
2 http method对应不同的请求动作(数据库或者业务逻辑)
GET:查询操作:
HTTP GET /devices?startIndex=0&size=20
HTTP GET /configurations?startIndex=0&size=20
HTTP GET devices{id}/configurations
HTTP GET devices{id}
POST:新增操作:
HTTP POST /device
PUT 更新操作(代表更新一个实体的所有属性)
HTTP PUT devices{id}
PATCH 部分更新(代表更新一个实体的部分属性)由于有的浏览器兼容性问题,一般推荐使用put
HTTP PATCH devices{id}
DELETE 删除操作
HTTP DELETE devices{id}
3 使用连字符"-“而不是”_"来提高URI的可读性
http://api.example.com/inventory-management/managed-entities //更易读
http://api.example.com/inventory_management/managed_entities //更容易出错
4 在URI中使用小写字母
http://api.example.org/my-folder/my-doc
5 不要使用文件扩展名 文件扩展名看起来很糟糕,不会增加任何优势。删除它们也会减少URI的长度。没理由保留它们。
http://api.example.com/device-management/managed-devices.xml / /不要使用它/ /
http://api.example.com/device-management/managed-devices / *这是正确的URI * /
6 使用查询组件过滤URI集合
很多时候,我们会遇到需要根据某些特定资源属性对需要排序