当前位置: 首页 > article >正文

【PythonWeb开发】Flask-RESTful风格编程

一、什么是RESTful的风格编程

        在前后端不分离的应用模式中,前端页面看到的效果都是由后端控制,由后端渲染页面或重定向,也就是后端需要控制前端的展示,前端与后端的耦合度很高。

        这种应用模式比较适合纯网页应用,但是当后端对接App时,App可能并不需要后端返回一个HTML网页,而仅仅是数据本身,所以后端原本返回网页的接口不再适用前端App应用。为了对接App后端还需要开发一套接口。

        在前后端分离的应用模式中,后端仅返回前端所需的数据,不再渲染HTML页面,不再控制前端的效果。至于前端用户看到什么效果,从后端请求的数据如何加载到前端中,都由前端自己决定,网页有网页的处理方式,App有App的处理方式,但无论哪种前端,所需的数据基本相同,后端仅需开发一套逻辑对外提供数据即可。

 

 

        RESTful是一种网络应用程序的设计风格和开发方式,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTful适合于移动互联网厂商作为业务使能接口的场景。

RESTful特点包括:

  1. 每一个URI代表一个资源

  2. 客户端使用GET、POST、PUT、DELETE这四种操作方式的动词对服务端资源进行操作

  • GET是用来获取资源(查)
  • POST是用来新建资源(增)
  • PUT用来更新资源(改)
  • DELETE用来删除资源(删)
  1. 通过操作资源的表现形式来操作资源

  2. 资源的表现形式是JSON(主流)XML(已经被淘汰了)

  3. 客户端与服务器之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。

二、RESTful风格的软件架构

         RESTful架构是对MVC架构改进后所形成的一种架构。通过使用事先定义好的接口与不同的服务联系起来、在RESTful架构中,客户端使用POST,DELETE,PUT和GET四种请求方式分别对指定的URL资源进行增删改查操作。因此RESTful是通过URI实现对资源的管理及访问,具有扩展性强,结构清晰的特点。

        RESTful架构将服务器分成前端服务器和后端服务器两个部分。前端服务器为用户提供无模型的视图。后端服务器为前端服务器提供接口,浏览器向前端服务器请求视图,通过视图中包含的Ajax函数发起接口请求获取模型。

        项目开发引入RESTful架构,利于团队并行开发。在RESTful架构中,将多数HTTP请求转移前端服务器上,降低服务器的负荷,使视图获取后端模型失败也能呈现。但RESTful架构却不适用于所有项目,当项目比较小时无需使用RESTful架构,项目变得更加复杂。

三、安装和使用

安装插件:

pip install flask-restful

注册插件的三个步骤:

# 1. 导包
from flask_restful import Api

# 2. 实例化
api = Api()

# 3. 绑定
api.init_app(app)

创建Resource实现类视图:

class HelloRESTful(Resource):
    
    def get(self):
        return {"data": "hello GET"}
    def post(self):
        return {"data": "hello POST"}

创建类视图后,路由和视图就分离了。所以必须要额外的添加路由。

api.add_resource(HelloRESTful, '/hello')

上面是在没有蓝图的情况下的使用示例,接下来在蓝图中使用:

# 从flask模块导入Flask和Blueprint类
from flask import Flask, Blueprint
# 从flask_restful模块导入Api和Resource类
from flask_restful import Api, Resource

# 创建一个Flask应用实例
app = Flask(__name__)

# 创建一个名为'user'的蓝图实例,用于组织用户相关的路由
user_bp = Blueprint('user', __name__)

# 使用蓝图实例创建一个API对象
user_api = Api(user_bp)

# 定义一个资源类HelloWorld,继承自Resource
class HelloWorld(Resource):
    # 定义GET请求的处理函数
    def get(self):
        # 返回一个简单的JSON响应,包含消息'hello get'
        return {'msg': 'hello get'}
    
    # 定义POST请求的处理函数
    def post(self):
        # 返回一个简单的JSON响应,包含消息'post get'
        return {'msg': 'hello post'}
    
# 将HelloWorld资源类添加到API中,并指定其URL路径为根路径'/user/hello'
user_api.add_resource(HelloWorld, '/user/hello')

# 注册'user'蓝图
app.register_blueprint(user_bp)

注意:如果蓝图里面有url_prefix,那么请求url = url_prefix + resource_url


http://www.kler.cn/a/371995.html

相关文章:

  • 3D Gaussian Splatting代码详解(三):模型构建,实现3D 高斯椭球体的克隆和分裂
  • ClickHouse 3节点集群安装
  • [mysql]相关子查询
  • 651320
  • ZooKeeper的应用场景:深入探讨分布式系统中的多样化应用
  • 智能工厂的设计软件 “word”篇、“power”篇和“task”篇
  • itertools模块的combinations很牛
  • 基于Springboot的在线考试与学习交流平台的设计与实现
  • Spring Boot:打造智能植物健康监测平台
  • QT找不到ffmpeg链接库解决方法
  • 用Java查询比特币实时行情 - 附免费查询接口
  • 深入理解Allan方差:用体重数据分析误差的时间尺度与稳定性
  • 《C++音频频谱分析:开启声音世界的神秘之门》
  • tomcat Java项目cpu飙升
  • Mybatis 批量操作存在则更新或者忽略,不存在则插入
  • 【论文阅读】Persistent Homology Based Generative Adversarial Network
  • CSS flex布局- 最后一个元素占满剩余可用高度转载
  • Rust 力扣 - 59. 螺旋矩阵 II
  • 正则表达式笔记
  • Windows目录共享到Linux
  • vue2和vue3在html中引用组件component方式不一样
  • 聊聊AI时代的新岗位
  • 软件测试-覆盖率测试-四关全
  • JavaScript的本地存储知识点详解Cookie、SessionStorage、LocalStorage、IndexedDB
  • SQL 数据汇总与透视的实用案例
  • mixin的基本用法