flask-restful插件学习

tech2025-01-13  5

文章目录

flask-restful插件学习一、安装flask-restful二、使用步骤1.初始化app时,修改app配置2.使用方式1.创建类视图函数2.添加类视图函数到api对象中3.接口输出内容处理方式 [官方文档](http://www.pythondoc.com/Flask-RESTful/fields.html) 4.接口输入参数 四.注意事项


flask-restful插件学习

使用restful插件,实现快速开发REST接口


一、安装flask-restful

安装flask-restful pip install flask-restful -i https://mirrors.aliyun.com/pypi/simple/

二、使用步骤

1.初始化app时,修改app配置

from flask import Flask from flask_script import Manager from flask_restful import Api app = Flask(__name__) api = Api() manage = Manager(app=app) if __name__ == '__main__': manage.run()

2.使用方式

1.创建类视图函数

创建类并且继承自Resource

from flask_restful import Resource class Hello(Resource): def get(self): return {'msg': 'ok'} def post(self): return {'msg': 'hello_post'} def put(self): return {'msg': 'hello_put'} def delete(self): return {'msg': 'hello_delete'}

2.添加类视图函数到api对象中

# methods 为对应路径允许的请求方式 # 代替原有的Blueprint内容 api.add_resource(Hello, '/', methods=['GET', 'POST', 'PUT', 'DELETE']) api.add_resource(StudentResource, '/student/', methods=['GET', 'POST', 'PUT', 'DELETE'])

3.接口输出内容

返回字典即可,请求返回的类型默认为JSON(Content-Type:application/json)

返回内容为对象时,需要处理

处理方式 官方文档

通过fields定义返回字段 ex:

student_fields = { # 修改返回key "s_id": fields.Integer(attribute='id'), "name": fields.String, "age": fields.Integer, # 添加默认值 "gender": fields.String(default='male'), # 可以生成对应的接口地址 "url": fields.Url(endpoint='studentresource') }

级联字段使用fields.Nested()定义,参数为另一个格式化对象 ex:

result_fields = { "msg": fields.String, "status": fields.String, # Nested 级联的,嵌套的 "data": fields.List(fields.Nested(student_fields)) }

对视图函数添加装饰器@marshal_with() 或 marshal(data,result_fields)

4.接口输入参数

输入参数的定制

from flask_restful import Resource, reqparse # 创建请求参数转换器 parse = reqparse.RequestParser() # 添加请求参数到转换器中 # type类型校验,help错误提示信息 parse.add_argument('id', type=int, help='参数id格式不正确') # 定义为必传参数 parse.add_argument('name',required=True,help='缺少name参数') class GradeResource(Resource): def get(self): parser = parse.parse_args() print(parser.get('id')) return {"msg": "ok"}

可以设定捕获参数的位置

parse = reqparse.RequestParser() # 从post body中获取 parse.add_argument('name',type=str,location='form') # 从查询字符串中获取 parser.add_argument('pagesize', type=int, location='args') # 从请求headers中获取 parse.add_argument('host', type=str,location='headers') # 从cookies中获取 parser.add_argument('session_id', type=str, location='cookies')

四.注意事项

将接口写在对应python文件中 将api对象初始化和注册的代码写在对应文件夹下的__init__.py文件中

最新回复(0)