Restful架构在flask中的运用

1、Restful 是什么 ?

 简单来说,Restful是一种应用程序架构风格。核心理念是,将网络上的一切事物当做资源,以资源为中心,使用AJAX之类的局部刷新技术,通过GET、POST、PUT、DELETE四种请求方法对资源进行调度,调度的结果返回的不再是HTML,而是数据!于是就成了我们口中常说的数据APi 。(包含个人看法,欢迎留言讨论)
四种请求的作用:

请求方式作用
GET获取资源
POST添加资源
PUT修改资源
DELETE删除资源

2、使用方法

在flask中,是通过flask-restful这个插件来实现Restful架构的。所以第一步是安装flask-restful

2.1 安装flask-restful

pip install flask-restful

2.2 创建并管理资源类
资源类一般是项目中涉及的实体,实例如下,创建 用户资源类

  • 创建
    由于操作对象可能是多个或单个资源,所以一般建单数和复数两个资源类。
    新建UserApi.py文件
from flask_restful import Resource

#单个资源类,一般用于 获取单个资源,修改资源、删除资源等操作
class UserResource(Resource):
    def get(self,id=None):
    	'''业务逻辑'''
        return '结果信息或返回数据'
    def put(self,id=None):
        pass
    def delete(self,id=None):
        pass
        

#复数资源类,一般用于 获取多个资源、添加资源等操作
class UsersResource(Resource):
    def get(self):
        pass
    def post(self):
        pass
  • 管理
from flask_restful import Api
from APP.Api.UserApi import UserResource,UsersResource

api = Api()
#api初始化,app:当前应用对象
def init_api(app):
  api.init_app(app=app)

'''添加资源,格式:(资源类,访问规则,允许的请求方法)'''
api.add_resource(UserResource,'/users/<string:id>',methods=['GET','PUT','DELETE']) #单数资源类
api.add_resource(UsersResource,'/users/',methods=['GET','POST']) #复数资源类

2.3 输入与输出定制

  • 输入定制
    通过reqparse对用户输入的数据进行定制,实例如下:
from flask_restful import reqparse

req = reqparse.RequestParser()
#输入定制 格式: (属性名,type=数据类型,required=是否必需,help=不符合要求时的提示信息)
req.add_argument('username',type=str,required=True,help='请输入用户名')
req.add_argument('password',type=str,required=True,help='请输入密码')

#用户请求后,在对应请求方法中获取数据
args = req.parse_args()
username = args.get('username')
password = args.get('password')
  • 输出定制
    通过field 和 marshal_with装饰器对返回的数据进行格式化定制,实例如下:
from flask_restful import fields, marshal_with

#输出定制
user_field = {
	  #格式: '用户看到的字段名称':fields.字段类型
     'user_id':fields.String(attribute='id'), 
      #attribute:数据表中的真正字段名称
     'username':fields.String(attribute='name'),
     'pwd':fields.String(attribute='password'), 
}

result_field = {
    'returnStatus':fields.Integer,
    #fields.List:列表  fields.Nested:关联数据
    'returnValue':fields.List(fields.Nested(user_field))
}
class UserResource(Resource):
    @marshal_with(result_field) #装饰器将数据与预定格式进行整合
    def get(self,id=None):
        users = User.query.all() #先用sqlalchemy创建用户模型User
        data = {
            'returnStatus':200,
            'returnValue':users
        }
        return data

输入结果

3、总结

  • Restful架构的使用,使资源的管理更为清晰明了,便于后期维护
  • 可见,使用Restful架构,后端接口全部返回的是数据,便于前后端分离
  • 返回的数据自动转为JSON格式,便于前端解析
  • 以上仅简单介绍了flask-restful的基本用法,详见:flask-restful使用手册
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值