flask插件系列之flask_restful设计API
2021-07-09 07:10
标签:pip 接口 html 模块 sel 映射 efault erro false flask框架默认的路由和视图函数映射规则是通过在视图函数上直接添加路由装饰器来实现的,这使得路由和视图函数的对应关系变得清晰,但对于统一的API开发就变得不怎么美妙了,尤其是当路由接口足够多的时候,可读性会变差。flask_restful可以使我们像Django那样统一在一个地方设计所有的API规则。 说明 将路由的设计统一在一个模块中,使用类的方式控制视图。 另外还有格式化返回数据结构,个人感觉并不是很好用,不述。 参考: http://www.pythondoc.com/Flask-RESTful/quickstart.html flask插件系列之flask_restful设计API 标签:pip 接口 html 模块 sel 映射 efault erro false 原文地址:https://www.cnblogs.com/cwp-bg/p/9687222.html前言
flask_restful
安装
pip install flask_restful
初始化
# extensions.py
from flask_restful import Api
flask_api = Api()
# __init__.py
from flask import Flask, current_app
from exsentions flask_api
app = Flask(__name__)
app.config[‘SECRET_KEY‘] = ‘123‘
flask_api.init_app(app)
添加蓝图和api
# rest/__init___.py
from flask import Blueprint
from exsentions import flask_api
# 创建蓝图
rest = Blueprint("rest", __name__)
__all__ = ["rest","api"]
# 加载蓝图所对应的视图上下文
from .api import *
# 设计路由
flask_api.add_resource(ToDo1,‘/restful‘)
flask_api.add_resource(Todo,"/restful1")
# rest/api.py
from flask_restful import Resource, fields, marshal_with, reqparse
parser = reqparse.RequestParser()
class ToDo1(Resource):
def get(self):
# 拷贝一个对象备用
new_parser = parser.copy()
# 添加请求参数和它的验证规则
new_parser.add_argument(‘n‘, type=int, help=‘Rate to charge for this resource,{error_msg}‘)
# 进行验证,得到通过验证后的字典或者抛出400错误
args = new_parser.parse_args(strict=True)
print(args)
return "OK"
def post(self):
pass
def put(self):
pass
class Todo(Resource):
def post(self):
new_parser = parser.copy()
new_parser.add_argument(‘n‘, type=int, help=‘Rate to charge for this resource,{error_msg}‘)
new_parser.add_argument(‘c‘, type=dict, help=‘Rate to charge for this resource,{error_msg}‘)
args = new_parser.parse_args(strict=True)
print(args)
return "OK"
主要方法
该方法创建了RULE对象,并将其添加到Maps对象中,
参数:
resource:视图类
urls:路由,可以多个指向一个视图类
endpoint:视图函数的标志,默认用类名替代
请求数据验证
# 创建一个RequestParser,其会拦截request上下文,但是其内部存储的参数列表对所有的请求都是同一个,因此针对每个请求都需要一个新的对象
parser = reqparse.RequestParser()
# 拷贝一个对象备用,参数列表是空的
new_parser = parser.copy()
# 向参数列表添加请求参数和它的验证规则,每个参数单独添加
new_parser.add_argument(‘n‘, type=int, help=‘Rate to charge for this resource,{error_msg}‘)
new_parser.add_argument(‘c‘, type=dict, help=‘Rate to charge for this resource,{error_msg}‘)
# 进行验证,得到通过验证后的字典或者抛出400错误
args = new_parser.parse_args(strict=True)
# 该方法其实是创建了一个Argument对象,其参数对应了Argument的初始化参数
def __init__(self, name, default=None, dest=None, required=False,
ignore=False, type=text_type, location=(‘json‘, ‘values‘,),
choices=(), action=‘store‘, help=None, operators=(‘=‘,),
case_sensitive=True, store_missing=True, trim=False,
nullable=True):
self.name = name # 参数的名字
self.default = default # 如果没有该参数,其默认的值
self.dest = dest # name的别名
self.required = required # 参数是否可以省略
self.ignore = ignore # 是否忽略参数类型转换失败的情况,默认不忽略
self.location = location # 从请求对象中获取的参数类型
self.type = type # 转换的参数类型,默认转换成str,失败就报错
self.choices = choices # 参数的值的有限集合,不再其中就报错
self.action = action
self.help = help # 参数无效时可以返回的信息
self.case_sensitive = case_sensitive # 是否区分大小写,默认所有大写转换成小写
self.operators = operators
self.store_missing = store_missing # 缺少参数时是否加默认的值
self.trim = trim # 是否去除参数周围的空白
self.nullable = nullable # 是否允许参数使用空值
文章标题:flask插件系列之flask_restful设计API
文章链接:http://soscw.com/index.php/essay/102677.html