Flask-REST接口开发 + marshmallow

本文介绍了RESTful接口设计的基本原则,包括客户端-服务器、无状态、规范接口和可缓存特性,并提供了uri规范示例。同时,讲解了如何使用Flask和marshmallow构建REST接口,marshmallow用于数据的序列化、反序列化和验证。还提到了接口异常处理和JWT(JSON Web Tokens)用于API访问验证的重要性,以及文件上传的安全注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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集合
很多时候,我们会遇到需要根据某些特定资源属性对需要排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值