flask-restful的请求功能

flask-restful的请求功能

1.请求解析
flask-restful 解析的功能:

  • 参数解析 RequestParser
  • 序列化 marshal函数
  • RequestParser 负责请求解析工作, 基本步骤如下:

1.创建请求解析器

请求解析器 = RequestParser()

2.添加参数规则

请求解析器.add_argument(参数名, 参数规则..)

3.执行解析

参数对象 = 请求解析器.parse_args()

4.获取参数

参数对象.参数名

示例代码:

from flask import Flask
from flask_restful import Resource, Api
from flask_restful.reqparse import RequestParser

app = Flask(__name__)
api = Api(app)


class DemoResource(Resource):
    def get(self):
        # 1.创建请求解析器
        parser = RequestParser()

        # 2.添加参数规则
        parser.add_argument('name')
        parser.add_argument('age')

        # 3.执行解析  默认会从 查询字符串/post键值对/post-json数据 进行参数提取
        args = parser.parse_args()

        # 4.获取参数
        print(args.name)
        print(args.age)

        return {'foo': "get"}


api.add_resource(DemoResource, '/')


if __name__ == '__main__':
    app.run(debug=True)

2.常用参数
在这里插入图片描述

代码示例:

  • default & required & location参数
from flask import Flask
from flask_restful import Resource, Api
from flask_restful.reqparse import RequestParser

app = Flask(__name__)
api = Api(app)


class DemoResource(Resource):
    def post(self):
        parser = RequestParser()

        parser.add_argument('name', required=True, location='json')
        parser.add_argument('age', default=10)

        args = parser.parse_args()

        print(args.name)
        print(args.age)

        return {'foo': "post"}


api.add_resource(DemoResource, '/')


if __name__ == '__main__':
    app.run(debug=True)
  • type参数
from flask import Flask
from flask_restful import Resource, Api
from flask_restful.reqparse import RequestParser
from flask_restful.inputs import *

app = Flask(__name__)
api = Api(app)

# 自定义函数进行参数校验和转换
def func1(value):  # 必须定义形参来接收传递来的参数
    if re.match(r'^user:', value):
        return value[5:] # 转换完, 还需要将结果返回
    else:
        raise ValueError('age参数格式错误')  # 校验失败, 会将错误信息以json形式返回


class DemoResource(Resource):
    def put(self):
        parser = RequestParser()

        parser.add_argument('name')
        # parser.add_argument('age', type=int)  # 转为int类型

        # parser.add_argument('age', type=boolean)  # 转为bool类型   1/0 true/false
        # parser.add_argument('age', type=date)  # 日期 转为datetime类型   YYYY-mm-dd
        # parser.add_argument('age', type=datetime_from_iso8601)  # 时间 转为datetime类型  2012-01-01T23:30:00+02:00
        # parser.add_argument('age', type=int_range(5, 10))  # 转为int类型 限定范围[5, 10]

        # parser.add_argument('age', type=regex(r'^1[3-9]\d{9}$'))  # 要求匹配正则
        parser.add_argument('age', type=func1)  # 自定义函数

        args = parser.parse_args()

        print(args.name)
        print(args.age)
        print(type(args.age))

        return {'foo': 'put'}


api.add_resource(DemoResource, '/')


if __name__ == '__main__':
    app.run(debug=True)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值