1
undertonememorie 2020-04-22 11:16:27 +08:00
voluptuous Schema 校验 规定字段类型和长度,测试人员肯定冲着搞崩你接口的心态去测试,你要保证系统的健壮性
|
2
ClericPy 2020-04-22 11:18:17 +08:00
我以前做的和 Fastapi 里用 pydantic 实现的差不多, 现在用的 Fastapi.......
|
3
wangyzj 2020-04-22 11:22:06 +08:00
marshmallow
|
4
ipwx 2020-04-22 11:26:38 +08:00
FastApi,你值得拥有
|
5
sichuyoudang312 OP @undertonememorie 我接口也想写的健壮些,文档里面写了 offset <int> <可选> 分页偏移量,默认 0,结果测试非输入字符串,那就抛异常了
|
6
sichuyoudang312 OP @ClericPy 因为这事发了帖子,发现了 pydantic,我不改了,我要去研究 pydantic
|
7
sichuyoudang312 OP @ipwx 学习了
|
8
bnm965321 2020-04-22 11:57:30 +08:00
出现异常当然要改,至少要把异常以错误的形式回馈
|
9
also24 2020-04-22 12:01:45 +08:00
offset 过大这件事,感觉应该在业务代码中处理,而不是入参时处理吧
|
10
johnsona 2020-04-22 12:35:02 +08:00
marshlallow+webargs,也是 schema 和我一起念,skema
|
11
Vegetable 2020-04-22 12:38:46 +08:00
生产服务器的所有异常都必须被捕获,无论任何情况都不能让上层报 500 Internal Error
我还以为这是后端开发的基本常识。 |
12
guyskk0x0 2020-04-22 12:55:37 +08:00 via Android
可以试试 Validr 这个库,我的用法:
https://github.com/anyant/rssant/blob/master/rssant_api/views/feed.py#L152 |
13
SingeeKing 2020-04-22 13:01:40 +08:00
“然后出现异常” 难道你的路由分发那里没有做错误捕获处理吗。。。
|
14
zhangqilin 2020-04-22 13:31:12 +08:00
Flask 有个 Valid 对象
我之前就是参照这个写了个 DjangoValid 给公司自己的项目用的 万幸很好用 |
15
sichuyoudang312 OP @Vegetable 当然不会让它报 500 了
|
17
Vegetable 2020-04-22 15:38:28 +08:00 1
@jsisjs20130824 一般我会在最外层做一个捕获所有异常的中间件, 然后向客户端返回{code:500,msg:未知错误},然后日志写入堆栈信息.
|
18
Vegetable 2020-04-22 15:43:10 +08:00
我觉得测试说的有点道理, 我为了避免这种问题,会直接返回参数异常,最多返回一下哪个字段异常了,不会返回为什么异常了.这样就避免了过于细致的类型判断.不过你引入框架的话,往往能够细致而不失优雅的解决.
|
19
ps1aniuge 2020-04-22 17:52:52 +08:00
我觉得测试说的对,严谨些,让别人挑不出毛病。
|
20
superrichman 2020-04-22 18:12:49 +08:00 via iPhone
是你的参数转换的问题,接口健壮性不够强
|
21
hell0v2 2020-04-22 19:05:04 +08:00
一般业务层做处理,不过接口也要 catch 住吧;反正不管怎么协调,前端输入异常的情况下,要有合理的返回
|
22
forkc 2020-04-22 19:10:04 +08:00
wtform
|