后端接口开发设计

后端架构设计

1 flask的优缺点

优点缺点
Flask 是一个 Python Web 开发的微框架,严格来说,它仅提供 Web 服务器支持,不提供全栈开发支持。然而,Flask 非常轻量、非常简单,基于它搭建 Web 系统都以分钟来计时,特别适合小微原型系统的开发。花少时间、产生可用系统,是非常划算的选择。对于大型网站开发,需要设计路由映射的规则,否则导致代码混乱。对新手来说,容易使用低质量的代码创建 “不良的 web 应用程序”。

2 什么是网站MVC设计模式

​ MVC分别是Model、View和Controller,这三部分相互关联有助于将信息的处理和呈现分开。其大致工作流程如下:

在这里插入图片描述

​ 用户在前端发起请求后通过后端服务器提交给controller处理然后交由model对数据进行处理最后由view渲染给用户。由于我们采用的前后端分离的开发模式,所以无需将处理好的数据再交给view而是直接返回给前端由前端开发者自行处理。这里我们介绍一下后端接口的开发模式,先附上一张后端程序的框架图:

在这里插入图片描述

​ 这里run.py是我们主程序的入口文件,而app则是我们整个项目文件。这里会发现不止有controller和model这两个模块,因为在正常开发过程中我们为了代码更加结构化会引入一些其它的工具模块或者业务模块。而MVC只是一个WEB开发模式的整体框架。首先我先简单介绍一下这里各个模块的具体业务。

模块业务
Service该模块主要是处理和用户的交互业务(数据)。
Controller这里是业务的控制转发模块,针对用户的不同请求作出相应的分发。可以调用Service层的服务。
Models数据封装,主要完成和数据库数据的映射。
Router路由注册模块,Controller中的控制器需要在该模块中注册才能生效。
Vendor小贩模块,顾名思义就是提供一些通用的简单的业务处理或者原材料(配置文件、全局变量等)
logs日志文件
env.py全局环境配置

​ 前端通过发送Http请求到后端服务器后首先该请求会交由Router处理(服务器前面的处理过程这里省略),将该请求转给已经在Router中注册的Controller模块对应的类(根据URL);然后Controller会根据相应的请求方式调用相应的类函数处理(POST、DELETE、PUT、GET等),这里Controller也会调用Service中的业务去完成整个处理过程,当所有业务处理完成后Controller会将处理好的数据转发给前端。这里是一个最简单的URL请求的过程如下图。

在这里插入图片描述

3 FBV和CBV

模式说明
FBVFunction base view 基于函数的视图,该模式无需路由分发而是直接路由到对应的函数处理业务
CBVClass base view基于类的视图,路由分发后的处理模块交由类处理

​ 由于CBV有明显的优势所以今后的开发过程中一般首选CBV。接下来我们看一下这两种方法的示例代码:

  • FBV
@app.route('/', methods=['GET'])
def index():
    """ 测试 """
    Log().add({
        "type":1,
        "level":1,
        "data":"1"
    })
    return BaseController().successData(msg='启动成功')
  • CBV
class UserController(Resource):
    def get(self):
        return "user"

    def delete(self):
        pass

    def put(self):
        pass 

    def post(self):
        pass

​ CBV无需自己再去判断请求的方式是GET、PUT等,直接在对应的方法中编写自己的业务逻辑即可。相对FBV而言CBV的代码更加简洁可读。想要了解CBV为什么可以做到如此简介的操作可以自行查看Resource的源代码即UserController继承的类。这里CBV中的get、put、delete等Http的请求方法是固定的。当然这里面你可以添加一些其它的方法成员都是可以的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值