推荐学习书目
› 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 · 6403 views
    This topic created in 2855 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
    zohuchneg
    OP
    Jan 11, 2019
    1
    一直干着传统开发,对互联网这些产品要如何设计,经验太少。
    lsido
    lsido
    Jan 11, 2019 via iPhone
    2
    看什么项目吧,项目小没必要
    不过我一般都是分开的
    limbo0
    limbo0
    Jan 11, 2019 via Android
    3
    这就是前人的坑,不行重新开呗
    zohuchneg
    zohuchneg
    OP
    Jan 11, 2019
    4
    @lsido 分开的话, 比如 model 层,这些会存在复用, 每个部分都要维护同样的代码?
    Muninn
    Muninn
    Jan 12, 2019
    5
    竟然有测试……

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