一 安装:
pip install flask_restrul
二 初始化并注册路由
# run.py from flask_restful import Api ... api = Api(app)
api.add_resource(Test, '/test/')
...
三 编写资源类,公司项目已删除无关代码
用到了 请求参数解析、自定义参数解析错误、自定义验证函数知识点
# 响应数据格式 def make_json_data(status, msg, data=None, **kwargs): json_data = kwargs or {} json_data.update({"status": status, "msg": msg, "data": data}) return json_data # 自定义请求参数解析错误 可参照源码。过程:请求参数解析中如果抛出异常了,会执行flask_restful中的abort,然后返回一个json错误,一般情况我们都会定义自己的json格式数据返回给前端,这个时候,我们就要定制abort,让它返回我们想要的json数据,这里没有使用help属性值,如果大家有更好的办法,望留言 def custom_abort(http_status_code, **kwargs): try: abort(http_status_code) except HTTPException as e: if len(kwargs): current_app.logger.error('request parameter error') e.data = make_json_data(1, '请求参数错误') raise flask_restful.abort = custom_abort
# 自定义数据验证,一般情况我们都要对请求参数做验证,可以通过参数请求中type属性定义,这里的错误是默认错误,会被help覆盖
def __custom_page_verify(value):
try:
int(value)
except:
raise ValueError('请求参数错误')
if int(value) <= 0:
raise ValueError('请求参数错误')
else:
return int(value)
class Test(Resource): decorators = [login_required]
def __init__(self): # 请求解析 # 在请求解析中声明的参数如果没有在请求本身设置的话将默认为 None,请求参数未添加到reqparse中将会被忽略 # 请求参数有多个值:action=append # 参数别名 # 参数位置 # 继承解析 self.reqparse = reqparse.RequestParser() super(Test, self).__init__() def delete(self, id): try: req_parse = self.reqparse.copy() #继承 req_parse.add_argument('loginuser', required=True, type=__custom_page_verify, location='json', help='请求参数错误') req_args = req_parse.parse_args() loginuser = req_args['loginuser']return make_json_data(0, "") except: return make_json_data('1', '删除设计策略失败')