V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
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
zohuchneg
V2EX  ›  Python

API 和 管理后台 要分开吗?

  •  
  •   zohuchneg · Jan 11, 2019 · 5940 views
    This topic created in 2664 days ago, the information mentioned may be changed or developed.

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

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

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

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