首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
V2EX  ›  Python

API 和 管理后台 要分开吗?

  •  
  •   zohuchneg · 7 天前 · 2466 次点击

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

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

    25 回复  |  直到 2019-01-12 14:22:24 +08:00
        1
    zohuchneg   7 天前
    一直干着传统开发,对互联网这些产品要如何设计,经验太少。
        2
    lsido   7 天前 via iPhone
    看什么项目吧,项目小没必要
    不过我一般都是分开的
        3
    limbo0   7 天前 via Android
    这就是前人的坑,不行重新开呗
        4
    zohuchneg   7 天前
    @lsido 分开的话, 比如 model 层,这些会存在复用, 每个部分都要维护同样的代码?
        5
    Muninn   7 天前
    竟然有测试……

    那现在烂还是将来更烂还两说呢
        6
    pathbox   7 天前 via iPhone
    看你的情况,分开是最好的吧
        7
    chenqh   7 天前 via Android
    分成两个分支不就好了吗
        8
    iyangyuan   7 天前 via iPhone
    做成微服务一步到位
        9
    janxin   7 天前
    @zohuchneg model 层可以做个 wheel,当依赖发;也可以做成服务
        11
    dengtongcai   7 天前 via iPhone
    小项目不用,后面有需要再拆
        12
    msg7086   7 天前
    天使完了以后如果之前的东西实在太烂就重来呗。重点是合理评估代码的质量。
        13
    Vegetable   7 天前 via Android
    这个问题其实很简单,把入口文件复制一份端口,单独作为后台,nginx 配置调一下。
    这样测试一起测,改后台逻辑不用动线上 API
        14
    nicevar   6 天前
    需要分开的,我的个人项目都分开,你这这样搅在一起改后台能把 api 部分搞挂了,如果 api 部分访问激增服务器扛不住,后台也跟着无法使用。
    model 层抽出来作为有个模块就行了,api 跟后台有差异的,后台基本上没有太多的性能要求,同样的数据库操作,后台用一些封装的 orm 库之类的就行了,但是 api 部分可能需要进行优化处理。
        15
    gowk   6 天前 via Android
    建议用 Go 重写之
        16
    motai   6 天前 via iPhone
    必须拆,被这种坑好几次了
        17
    zohuchneg   6 天前
    @nicevar 现在很多业务逻辑都写在了 model。 按你的意思,把 model 抽出来,业务封装到各自的 service 层。model 只作为一个基础而已。
        18
    zohuchneg   6 天前
    @Muninn 测试都是我们接手后 加的.... 之前都是个人开发。
        19
    avenger   6 天前 via iPhone
    后台数据也改成 api 调用不就行了?统一接口
        20
    loading   6 天前 via Android
    起码 api 的 url 规划要分开。
        21
    nicevar   6 天前
    @zohuchneg 业务逻辑写在 model 也没什么,mvc 的框架很多都这么写,你的情形如果能把 model 细化一下,能用于 api 独立出来的话可以考虑一下,如果太复杂工作量大真的不如重写 api 模块了,毕竟 python 代码写起来快,其实这种情况个人觉得可以学习 java 的那一套,弄个 Dao 层出来,前期写起来可能比较啰嗦,但是后期维护比较爽
        22
    thet   6 天前 via Android
    model 可以共用吧,把前后台入口区分下
        23
    bestkayle   6 天前 via iPhone
    小公司用 py 写的项目 99.99%的可能性是烂代码
        24
    zohuchneg   6 天前
    @nicevar 谢啦,
        25
    zohuchneg   6 天前
    @thet 弱弱的问句,入口区分? 能举个例子嘛。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2078 人在线   最高记录 4236   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 01:43 · PVG 09:43 · LAX 17:43 · JFK 20:43
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1