V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
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 · 2019-01-11 22:35:58 +08:00 · 5355 次点击
    这是一个创建于 2142 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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