使用restful插件,实现快速开发REST接口
创建类并且继承自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'}返回字典即可,请求返回的类型默认为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)
输入参数的定制
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文件中