flask_restful的使用方法
一 安装:
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('', '删除设计策略失败')
flask_restful的使用方法的更多相关文章
- Flask + vue 前后端分离的 二手书App
一个Flask + vue 前后端分离的 二手书App 效果展示: https://blog.csdn.net/qq_42239520/article/details/88534955 所用技术清单 ...
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- flask插件系列之flask_restful设计API
前言 flask框架默认的路由和视图函数映射规则是通过在视图函数上直接添加路由装饰器来实现的,这使得路由和视图函数的对应关系变得清晰,但对于统一的API开发就变得不怎么美妙了,尤其是当路由接口足够多的 ...
- flask_restful(转载)
flask插件系列之flask_restful设计API 前言 flask框架默认的路由和视图函数映射规则是通过在视图函数上直接添加路由装饰器来实现的,这使得路由和视图函数的对应关系变得清晰,但对于统 ...
- Flask_restful 插件实战笔记——基本概念与使用
最近在Resetful接口设计上想法还是挺多的,也实现了一些需求!想着整理下Flask_restful插件的基本知识,方便日后的复习! 官方地址:https://flask-restful. ...
- Mock Server之flask_restful(python+flask)
一.结构设计 上一篇,写了Mock Server的基础实现与被测系统的对接 当我们要mock 的 api越来越多的时候,路由与相关的方法都堆在app.py中就不合适了,不可拔插,可读性也比较差,因此要 ...
- flask_restful实现文件下载功能
环境:前后端完全分离,后端flask_restful,前端vue from flask_restful import reqparse, Resource from flask import send ...
- mapreduce多文件输出的两方法
mapreduce多文件输出的两方法 package duogemap; import java.io.IOException; import org.apache.hadoop.conf ...
- 【.net 深呼吸】细说CodeDom(6):方法参数
本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...
随机推荐
- [Flex] 组件Tree系列 —— 运用LabelFunction hasChildren getChildren设置Tree包含节点个数
mxml: <?xml version="1.0" encoding="utf-8"?> <!--功能描述:运用LabelFunction h ...
- ArchLinux "error: required key missing from keyring"
downloading required keys... error: key "C847B6AEB0544167" could not be looked up remotely ...
- 获取Android状态栏的高度
Android 开发中经常需要知道屏幕高度.宽度.状态栏,标题栏的高度等 宽度和高度 WindowManager windowManager = (WindowManager) getSystemSe ...
- ubuntu->错误
1.dpkg *** locked 原因:安装某个包不成功, 可以使用命令 dpkg --configure -a 来重启中断的安装过程 如果屡次安装不成功放弃安装,则删除 lock 2.flashp ...
- Windows下Anaconda安装 python + tensorflow GPU版
这里首先确认没有安装CPU版本,并默认已经安装了CUDA和Cudnn以及anaconda. 安装gpu版本的tensorflow 接下来需要安装GPU版本的tensorflow: 打开cmd并输入: ...
- python学习,day3:文件的修改
对文件进行修改,对不起,在原文修改比较难,只能采用循环覆盖的方法 # coding=utf-8 # Author: RyAn Bi f = open('yesterday2','r',encoding ...
- 高阶篇:6)设计评审Design reviews;
本章目的:明白设计评审Design reviews的概念和流程,不犯常见错误. 1 设计评审概念: 所谓设计评审,是指对设计所作的正式的.综合性的和系统性的审查,并写成文件,以评定设计要求与设计能力是 ...
- 采用轮询的方式检测串口输入&&采用中断的方式检测串口输入的区别!
区别1:中断USART1_IRQHandler()不放进main(主函数)里,而轮询检测rcv()需要: 但是需要在主函数里对中断NVIC()进行初始化,因为所有程序都是从主函数开始一步一步执行,想要 ...
- mojing SDK根据坐标进行移动
using UnityEngine; using UnityEngine.UI; using System.Collections; public class transforms : MonoBeh ...
- sessionStorage、localStorage技术相关以及商家sid、sbid记录相关、vue相关问题
一个项目的需求如下: 作为第一个第三方平台,我们可以提供给不同的商家技术支持,即在一个url后面根据不同的商家来提供不同的查询字符串(包含sid和sbid),所以为了得到这个商家的信息,我们需要使用解 ...