Python中API和管理后台是否需要分开设计?

接手了一个天使轮的烂项目,头疼..一坨代码,都不知道怎么下手, 目前情况是,项目用 flask 写的,管理后台也没有前后分离,用的 jinja2 模板。API 支撑着小程序和 APP,而且 API 和后台都在一个项目里面,后台和 API 的代码耦合太大。现在后台一直在频繁更新,API 没改动也得跟着跑测试,一发布 API 也得停。

不行就推翻重来了,反正人多。 我想知道现在业界流行的做法是什么样的,一开始这种项目要如何设计? 大伙给点思路。


Python中API和管理后台是否需要分开设计?
24 回复

一直干着传统开发,对互联网这些产品要如何设计,经验太少。


看什么项目吧,项目小没必要
不过我一般都是分开的

这就是前人的坑,不行重新开呗

分开的话, 比如 model 层,这些会存在复用, 每个部分都要维护同样的代码?

竟然有测试……

那现在烂还是将来更烂还两说呢

看你的情况,分开是最好的吧

分成两个分支不就好了吗

做成微服务一步到位

model 层可以做个 wheel,当依赖发;也可以做成服务

小项目不用,后面有需要再拆

天使完了以后如果之前的东西实在太烂就重来呗。重点是合理评估代码的质量。

这个问题其实很简单,把入口文件复制一份端口,单独作为后台,nginx 配置调一下。
这样测试一起测,改后台逻辑不用动线上 API

需要分开的,我的个人项目都分开,你这这样搅在一起改后台能把 api 部分搞挂了,如果 api 部分访问激增服务器扛不住,后台也跟着无法使用。
model 层抽出来作为有个模块就行了,api 跟后台有差异的,后台基本上没有太多的性能要求,同样的数据库操作,后台用一些封装的 orm 库之类的就行了,但是 api 部分可能需要进行优化处理。

建议用 Go 重写之

必须拆,被这种坑好几次了

现在很多业务逻辑都写在了 model。 按你的意思,把 model 抽出来,业务封装到各自的 service 层。model 只作为一个基础而已。

测试都是我们接手后 加的… 之前都是个人开发。

后台数据也改成 api 调用不就行了?统一接口

起码 api 的 url 规划要分开。

业务逻辑写在 model 也没什么,mvc 的框架很多都这么写,你的情形如果能把 model 细化一下,能用于 api 独立出来的话可以考虑一下,如果太复杂工作量大真的不如重写 api 模块了,毕竟 python 代码写起来快,其实这种情况个人觉得可以学习 java 的那一套,弄个 Dao 层出来,前期写起来可能比较啰嗦,但是后期维护比较爽

model 可以共用吧,把前后台入口区分下

小公司用 py 写的项目 99.99%的可能性是烂代码

回到顶部