Replies: 4 comments
-
ModelViewSet 的生成文档好像用的是 https://drf-spectacular.readthedocs.io/en/latest/readme.html 看文档的意思是可以直接在 model 等级设置,但如果是自定义的action 那还是要自己写文档逃不了 |
Beta Was this translation helpful? Give feedback.
0 replies
-
拿着小板凳等着,学习一下! |
Beta Was this translation helpful? Give feedback.
0 replies
-
|
Beta Was this translation helpful? Give feedback.
0 replies
-
现有的前端使用ajax请求后端,对于post方法,会有一些数据转换。 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
近期准备改一些东西,发现大多数的方法都存在api和原始实现两个套代码,重合度很高,导致改动都会涉及两处调整,瞬间动力不大了,准备先进行部分api接入(参考PR #1668 ),弃用原始的方法,但是看api实现过程中有一些疑问,可以交流一下
资源权限
现有Archery设计完全没有租户的概念,所以资源权限不太好管理,需要在每个方法内实现资源权限判断,看到部分API操作也没有做资源控制,比如SQL工单通过API可以进行全局资源的访问和提交,这种的确是可以很方便的提供给外部平台对接,但是Archery自身要接入就少了权限控制,建议资源权限还是和以前一样,在每个方法上做判断
操作权限
API的操作权限有一个全局的IsInUserWhitelist控制,但是每个具体操作没有权限控制,结合上面的资源权限,假如授权了用户可以通过API访问,就可以获取和操作全局资源,这种可以和通过permission_required控制,前提不会有匿名访问的场景
列表分页
自定义Pagination类中将get_paginated_response方法的入参data从list调整为dict,定义了count key,貌似没有使用,是否可以直接使用原生的get_paginated_response,这样list的方法都可以不用重复写那几行内容了
Archery/sql_api/pagination.py
Lines 16 to 22 in c9627d4
同时Archery使用bootstarp-table对列表返回有格式限制,是否可以统一使用bootstarp-table需要的格式,否则可能需要通过参数来区分返回结果
ModelViewSet的使用
针对纯粹model的操作,比如用户、资源组这些,使用ModelViewSet貌似会更方便,不用单独写增删改查,但是为了api文档生成好像还是每个方法都需要写一下使用extend_schema,不知道是否有View维度配置的方式
Routers的定义
部分uri定义不太符合rest推荐的资源命名方式,同时需要逐个定义,结合ModelViewSet+Routers自动生成可能会比较方便,就是不知道对于工单这种复杂的逻辑,是否会影响维护,是倾向于增删改查单独写视图还是使用ModelViewSet
先码这么多,很久没动项目都不太熟悉了🙈🙈🙈,再次感谢大家参与贡献
Beta Was this translation helpful? Give feedback.
All reactions