image.png 以上是通过最原始的方式实现,没有使用flask的RESTful扩展库 使用flask的RESTful扩展库 flask-restful 安装Flask-RESTful库: pip install...import reqparse, abort, Api, Resource app = Flask(__name__) api = Api(app) TODOS = { 'todo1':...reqparse, abort, Api, Resource app = Flask(__name__) api = Api(app) (2)定义我们需要操作的资源类型(都是json格式的): TODOS..., } (3)Flask-RESTful提供了一个用于参数解析的RequestParser类,类似于Python中自带的argparse类,可以很方便的解析请求中的-d参数,并进行类型转换。...parser = reqparse.RequestParser() parser.add_argument('task') (4)我们观察标准的API接口,这里的接口可以分为两类:带有item_id的
某些情况下,需要读取flask网站要目录下的txt文件。但是直接在flask网站的目录下创建一个文件是无法访问的。...从网站找了一些资料,最终发现通过写一个方法返回txt内容比较简单方便,不过此方法适用于简单的文件读取以及读取量比较小的时候。...延伸知识点: 因为在之前的代码中做过一个简单的url实例,url的定义和本文的定义一样,只是参数名不一样,如下: ?...这时候就遇到一个问题,当我把今天的url定义放到最后面的时候,其实访问的是/这个url,会一直返回hello xxx, 然后把本文例子的代码放到/这个接口的上面,再次运行,得到正确的结果
入门 入门网址:http://docs.jinkan.org/docs/flask/quickstart.html from flask import Flask app = Flask(__name_...image.png 允许外网进行访问 app.run(host='0.0.0.0') 搭建自己的api 第一版 功能说明 从url中解析出文字信息,并对文字信息进行加工处理,我这边是把文本进行一个实体识别和关系抽取...# -*- coding: utf-8 -*- # antuor:dxiaod from flask import Flask, request app = Flask(__name__) @app.route...inputstr=%E4%BD%A0%E5%A5%BD%E5%95%8A 可以见到你要的文字 第二版 功能说明 根据别人的文档定制化开发api 传参:一堆json样式的字符串 回参:一堆json...样式的字符串 传参功能用bind_request_parmams 回参用Response # -*- coding: utf-8 -*- # antuor:dxiaod from flask import
Flask是一个使用 Python 编写的轻量级 Web 应用框架,很适合个人开发,我们在此处做一个接口。 为方便调试,本文使用get接口方式。...本文只是Flask开发的接口的初步文档,从最简单的接口开发到稍微复杂一些的接口,后续如有时间,会逐步完善,包括token鉴权、跨域认证、蓝图应用、日志管理等等。...第一步,首先在configs中配置数据源 configs.py HOST = '127.0.0.1' PORT = '5432' DATABASE = 'runoobdb' USERNAME = 'postgres...db exts.py from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() 第三步,构造了一个flaskutils,在这里定义一些接口应用到的公共类...import Flask from flaskutils import * from flask import request,jsonify app = Flask(__name__) # 加载配置文件
Github:https://github.com/hylinux1024 微信公众号:angrycode 前两章把程序的结构以及 API的协议基本上搭建起来了。...这些信息对使用这个系统 API的客户端来说不是很友好,我们希望通过结构化的 json数据进行返回。...,对开发过程中调试也是很有帮助的。...0x03 小结一下 在项目开发过程中,对于重复的逻辑应该要抽象封装 Don't repeat yourself 而如何封装就要看个人功力了,我觉得除了多学习,多看源码,几乎没有其它捷径。...0x04 学习资料 https://palletsprojects.com/p/flask/ flask官方文档 https://docs.sqlalchemy.org/en/13/orm/backref.html
安装依赖 安装 pip install redis (当然,你也可以使用Flask-Cache这个插件,使用起来也挺方便,不过本文延续之前的一些历史代码,就是直接使用redis这个库) 然后对redis...redis实例 r_cache = redis_helper.Redis.connect(db=5) 由于我本机中还有其它的服务在开发,所以我选择5号库作为缓存,避免与其它服务发生冲突。...0x01 SQLAlchemy中实体关系的表示 前面几讲对模型中的关系在SQLAlchemy中的表示没有详细的说明,今天来拆解一下。...通过外键关联了这两张表,但在实际的开发使用中,我们希望在查询到UserAuth实例的时候,希望能够直接就能够得到对应的用户信息UserInfo的实例,这时候就可以用db.relationship()接口...0x03 总结 本文对前面几讲中的涉及到的模型定义中关系的表示和缓存的使用做一个补充说明。
api/__init__.py from flask import jsonify def make_response_ok(data=None): resp = {'code': 0, 'msg...return func() return decorator 在 __init__.py中首先定义了两个封装统一的 json数据结构的的方法,主要是用到 flask中的 jsonify函数,它可以把一个对象转成...bp = Blueprint("auth", __name__, url_prefix='/api/auth') 短信接口的实现这里会使用到 redis,将请求到的短信验证码保存在 redis中,并设置过期时间...最后我们看一下 app.py from flask import Flask from api import auth, config from models import db app = Flask...这里我使用最简单的方式,直接使用 unittest模块。 例如测试发短信的业务接口,首先生成一个随机数 nonce,然后计算校验码 sign参数,最后调用 flask中的 post方法模拟接口请求。
不过说了那么多理论,接下来就利用 Flask开发一个企业级的 API应用。 我选用团队最近开发的一个企业应用作为案例。...+Redis+marshmallow # 部署技术栈 Python3.7+venv+nginx+gunicorn+supervisord 当然企业实际开发中还需要编写接口文档,用于各端同学的交互。...模块 当用户充值为 VIP后可以解锁一些功能,比如查看谁看过我的列表等 注意为了避免项目开发周期过长我们主要关注前台 api的开发,对于后台管理功能暂时不考虑。...0x04 总结 本篇是基于Flask开发企业级API应用的第一篇,主要是对项目开发前期的准备工作,包括项目设计、数据库设计以及项目结构搭建,当然实际工作中可能还会先出 API文档,让前端的同学可以先动起来...://realpython.com/flask-connexion-rest-api-part-2/
前面讲到了Flask实现api,但api是给别人用的,就要告诉别人如何发现api,以及api的用途、名称、出参、入参,生成api文档的做法有好多种,本文选了一种最简单的方式。...核心就是通过app.view_functions 这个字典找到每个API 的endpoint所绑定的方法,然后访问方法的名字和文档即可 从路由中搜索api,在这里可以构筑规则 def get_api_map...docs的首页,一个是各个api的规则定义 @app.route('/', methods=['GET']) def index(): """List all API to this page...href="https://github.com/tobyqin/">Toby Qin - {% endblock %} api首页的页面如下: 具体api的像个文档 最后,谢谢关注,谢谢支持!
self:就是 Flask 类的实例 rule:其实就是路由规则 end_point:函数名 methods:如果没有传,那么会先通过 view_func 获取 methods 属性,如果还是没有,那默认就是...GET,记得这是个列表 [ ] 结论 默认的 app.route() 是仅支持 GET 请求的,如果想通过 POST、PUT、DELTE 等方法正常请求的话,需要添加 methods 参数哦 GET...踩坑之一:哎呀,假设我用 GET 方法发起请求,那么就会直接报 405,说你的请求方法是不允许的!记住了哦! ?...要记住,如果 return 的是字典,那么请求得到的响应数据是 Json 格式哦 PUT、DELETE 请求的栗子 代码 @app.route('/delandput', methods=["DELETE...怎么报错了...仔细一看,错误信息已经提示的很清楚了,视图函数的返回值类型只能是 string、dict、tuple 正确的代码 @app.route('/delandput', methods=["DELETE
遇到的问题们 1 国外pip源安装缓慢 使用清华的pip源 pypi 镜像使用帮助 pypi 镜像每 5 分钟同步一次。...pip的 -r参数接 requments.txt 我的方法 是在root的目录下的~/.config/pip/pip.conf里写 global参数 执行的时候用的sudo pip install...-r requments.txt 2 由于我用的conda虚拟环境 直接pip安装有问题 我用的conda环境,我想当然的认为只要进入虚拟环境就可以肆意用pip命令了,结果不是 还需要指定...pip的文件路径 例如: sudo /home/olizhao2/anaconda3/envs/FXTest_py35/bin/pip install -r requirments.txt 3...还需要pip安装的支持包 redis pymysql python-hessian(git里有) 4 还需要 安装的服务 nginx redis supervisor 安装 redis 在
自己在写的flask页面时,前端用的md,后端用的ue,官网上都是php、jsp、asp的接口,然而自己人生苦短,所以做了记录 from app.config.ueditor import Config...return jsonify(state='error:{}'.format(e)) 因为截图需要安插件,抓取远程文件没找到该功能,所以没写 参考了托小尼https://www.diandian100.cn的部分代码
在flask项目中,上传文件时后台报http 413 Request Entity Too Large 请求体太大错误!...解决的2种方法: 1.在flask配置中设置 MAX_CONTENT_LENGTH的值; 如设置为20M ( MAX_CONTENT_LENGTH=20*1024*1024) 这时小于20M的文件都可以上传...相关连接: http://www.pythondoc.com/flask/config.html 2.对于配置了nginx的项目,修改配置大小 打开nginx主配置文件nginx.conf,在/
Flask中的CBV 第一种 class Index(views.MethodView): methods = ['GET', 'POST'] decorators = []...index'相当于设置endpoint Index.as_view内部也会根据请求方式进行反射执行对应函数即执行dispatch_request app.add_url_rule是进行装饰器路由映射内部执行的函数...,本质上也是由add_url_rule添加的映射关系,decorators是添加的装饰器列表 第二种 class Index(views.View): methods = ['GET',...app.add_url_rule('/index', view_func=Index.as_view(name='index')) 第二种继承的是views.View,这样就需要写dispatch_request
一.简单的使用 - 必须要设置秘钥因为flash是基于session -设置:flash('aaa') -取值:get_flashed_message() #从源码我们可以看出get_flashed_message...每次获取后都会进行pop删除所以在页面刷新或者跳转值都会消失 #如果页面没有发送跳转或者刷新,之后再调用get_flashed_message() 依然可以去到因为源码中以及对于查询对象进行了赋值 -...详细介绍 ''' 1 设置flash 1.1 flash("要传递的值",category="分类的名称"),如果不传默认是message 本质:session['_flash'] 2取..., 2.1.1如果不传递 category_filter,取出上面存储的所有分类传递的值 2.1.2如果不传with_categories就只取值,不取分类的名字,如果传值,就获取 分类名和分类值...3 这个flash只能一个视图函数中取,只要有一个视图函数取过了,那其他视图函数就不能获取 本质:session.pop("_flash") 3.1 但是在同一个视图函数里面可以无限的取值
同样, 开发 checkout 链接也应该能工作,这样才可以在 virtualenv 中容易地安装开发版 本,而不是手动下载库。...他山之玉,可以攻石 本文档只接触了扩展开发中绝对的最小部分,如果你想要了解更多,一个非常好的 主意是查看 Flask Extension Registry 上已有的扩展。...这不仅获得人们会想 从扩展中得到什么的想法,也可避免多个开发者重复发明轮子。 记住:良好的 API 设计是困难的,所以请在邮件列表里介绍你的项目,让 其它开发者在 API 设计上助你一臂之力。...最好的 Flask 扩展是那些为 API 共享通用风格的扩展,并且这只在起初就协作时 奏效。 已审核的扩展 Flask 也有已审核的扩展的概念。...已审核的扩展被作为 Flask 自身的一部分来测 试来保证在新版本中不会破坏。这些已审核的扩展会在 Flask Extension Registry 中列出,并有相应的标记。
继承 模板继承是为了重用模板中的公共内容。一般Web开发中,继承主要使用在网站的顶部菜单、底部。这些内容可以定义在父模板中,子模板直接继承,而不需要重复书写。...标签定义的内容 {% block top %} {% endblock %} 相当于在父模板中挖个坑,当子模板继承父模板时,可以进行填充。...子模板使用extends指令声明这个模板继承自哪个模板 父模板中定义的块在子模板中被重新定义,在子模板中调用父模板的内容可以使用super() 父模板 base.html {% block top %}...包含 Jinja2模板中,包含(Include)的功能是将另一个模板整个加载到当前模板中,并直接渲染。...继承(Block)的本质是代码替换,一般用来实现多个页面中重复不变的区域。 包含(include)是直接将目标模板文件整个渲染出来。
API 常见的几个类:lang/util/io/math/net awt -------- 用于创建用户界面和绘制图形的所有类。...util ------ 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类 (字符串标记生成器、随机数生成器和位数组...------ 为实现网络应用程序提供类 lang------ 为java编程提供基础类 io -------- 通过数据流、序列化和文件系统,提供系统的输入和输出...math ------ 提供用于任意精度整数算法和任意精度小数算法的类 Java 开发工具集(Java Development Kit),是 JDK的缩写; API(Application... Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
在 REST 中,开发人员显式地使用 HTTP 方法,对系统资源进行创建、读取、更新和删除的操作: 使用 POST 方法在服务器上创建资源 使用 GET 方法从服务器检索某个资源或者资源集合 使用 PUT...,这是因为在API的迭代开发过程中,文档更新会比较麻烦。...swagger帮API使用者和开发者纠正了这个问题。 什么是swagger Swagger是一个简单但功能强大的API表达工具。...改框架为创建JSON或YAML格式的RESTful API 文档提供了OpenAPI规范。swagger文档可由各种编程语言处理,可以在软件开发周期中嵌入源代码控制系统中,以便进行版本管理。...--spec 生成的代码目录结构如下 $tree . |__ api.yml $ swagger_py_codegen -s api.yml example-app -p demo $ tree (flask-demo
原文地址:Implementing a RESTful Web API with Python & Flask 简介 首先,安装Flask pip install flask 假设那你已经了解RESTful...API的相关概念,如果不清楚,可以阅读我之前写的这篇博客Designing a RESTful Web API....Flask是一个使用Python开发的基于Werkzeug的Web框架。...Flask非常适合于开发RESTful API,因为它具有以下特点: 使用Python进行开发,Python简洁易懂 容易上手 灵活 可以部署到不同的环境 支持RESTful请求分发 我一般是用curl...,最好还是像上面这样做,因为Flask默认返回的错误信息是HTML格式的。
领取专属 10元无门槛券
手把手带您无忧上云