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 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...
随机推荐
- ARX项目中添加开源数据库SQLite3 的加密开源库wxsqlite3
RX添加wxsqlite3加密数据库, 下载 https://sourceforge.net/projects/wxcode/files/Components/wxSQLite3/ 复制这11个文件到 ...
- [Objective-C语言教程]变量(6)
变量是程序可以操作的存储区域的名称. Objective-C中的每个变量都有一个特定的类型,它决定了变量内存的大小和布局; 可存储在内存中的值的范围; 以及可以应用于变量的操作集. 变量的名称可以由字 ...
- python2-url编解码
#coding:utf-8import urllibs={"username":"hhh","password":"XXXX&qu ...
- css块元素及内联元素
块级元素主要有: address , blockquote , center , dir , div , dl , fieldset , form , h1 , h2 , h3 , h4 , h5 , ...
- Cache缓存设计
缓存的适用场景: 缓存的目的是提高访问速度,减少不必要的开销,提高性能.那什么样的场景适用于缓存呢.试想一个多项式的计算是一个CPU bound的操作,如果频繁调用同一个多项式的结果.显然缓存结果是一 ...
- esp32编程第一例 hollow word
#include<stdio.h>#include"freertos/FreeRtos.h"#include"freertos/task.h"#in ...
- FPGA基础学习(6) -- 原语
目录 1. IBUF和IBUFDS(IO) 2. IDDR(Input/Output Functions) 3. IBUFG和IBUFGDS(IO) 原语,即primitive.不同的厂商,原语不同: ...
- pymysql 各种坑总结
pymysql各种坑只针对自己的项目1.关于关闭连接,报错为:pymysql.err.InterfaceError: (0, '') 这个错误原因:对已经关闭的链接再次进行操作,参考MySQL.err ...
- 详解exif.js,应用于canvas照片倒转(海报H5)
业务背景,苹果手机调用上传接口拍照没有问题但是上传到网页上照片倒转了解决方法利用exif.js读取图片参数并对图片进行元数据修改 window.btoa(str)转码 window.atob(base ...
- mysql 03
CREATE TABLE class( empno INT, ename VARCHAR(4), job VARCHAR(4), mgr INT, hiredate DA ...