
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 PRO “然后出现异常” 难道你的路由分发那里没有做错误捕获处理吗。。。 |
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 @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 |