Flask之RESTFul API前后端分离
Flask之RESTFul API前后端分离
一:虚拟环境搭建的两种方式
1 pipenv的使用
pip install --user pipenv安装pipenv在用户目录下
py -m site --user-site通过此命令找到用户基础目录,结果为C:\Users\u14e\AppData\Roaming\Python\Python35\site-packages
将用户基础目录结尾的site-packages换成Scripts,即C:\Users\u14e\AppData\Roaming\Python\Python35\Scripts,然后将这一路径添加到系统变量中
重新打开命令行工具,如cmd,pipenv --version检查是否安装成功
pipenv install创建一个虚拟环境
pipenv shell激活虚拟环境,exit推出虚拟环境
pipenv install requests安装python包,pipenv install django==1.11.7安装制定版本的包,pipenv uninstall requests卸载包
pipenv graph查看安装的包,以及依赖的其他包
2 pip virtualenv(使用workon进行管理)的使用
# 1 安装
pip install virtualenv
virtualenv --version
# 非Windows
# pip install virtualenvwrapper
# Windows
pip install virtualenvwrapper-win
# 查看当前所有的虚拟环境
workon
# 创建一个虚拟环境
mkvirtualenv new_env
# 删除一个虚拟环境
rmvirtualenv new_env
3 一次性导入多包方法(解决环境兼容问题)
# 在当前环境中将路径切到项目包打包txt文件目录下
- 项目依赖 pip3 install pipreqs
- 生成依赖文件:pipreqs ./ --encoding=='utf-8'
- 安装依赖文件:pip3 install -r requirements.txt
二:Flask的简单实用和蓝图
1 简单使用
# app.py
from flask import Flask
def create_app():
app = Flask(__name__) # 指定位置信息
app.config.from_object('app.config.setting')
app.config.from_object('app.config.secure')
register_blueprint(app)
return app
# genger.py---启动文件
from app.app import create_app
app = create_app()
@app.route('/v1/user/get')
def get_user():
return 'i am andy'
@app.route('/v1/book/get')
def get_book():
return 'this is get book '
if __name__ == '__main__':
app.run(debug=True)
2 蓝图的使用
# 分别设置蓝图 # book.py
from flask import Blueprint
book = Blueprint('book', __name__)
@book.route('/v1/book/get')
def get_book():
return 'this is get book '
# user.py
from flask import Blueprint
user = Blueprint('user', __name__)
@user.route('/v1/user/get')
def get_user():
return 'i am andy'
# app.py(生成app并注册蓝图)
from flask import Flask
def register_blueprint(app):
from app.api.v1.user import user
from app.api.v1.book import book
app.register_blueprint(user)
app.register_blueprint(book)
def create_app():
app = Flask(__name__) # 指定位置信息
app.config.from_object('app.config.setting')
app.config.from_object('app.config.secure')
register_blueprint(app)
return app
# 启动文件
from app.app import create_app
app = create_app()
if __name__ == '__main__':
app.run(debug=True)
3 蓝图的机制缺点
1 Blurpring蓝图不是用来拆分视图函数的,应该是用来模块级别的拆分
2 写路由的时候太繁琐(重复劳动,比如我写v1/book/get,又要写一个接口是v1/book/delete)
三:自定义红图
1 创建红图流程
新建一个包libs,里面放置的是红图的方法
#创建红图
class Redprint:
def __init__(slef,name):
self.name = name
self.mound = [] def route(self,rule,**options):
def decorator(f):
# f就是所装饰的方法试图,rule就是路由,options就是关键字参数,比如,methods=['get','post']
self.mound.append((f,rule,options))
return f
return decorator def register(self, bp, url_prefix=None):
if url_prefix is None:
url_prefix = '/' + self.name
for f, rule, options in self.mound:
endpoint = options.pop("endpoint", f.__name__)
bp.add_url_rule(url_prefix + rule, endpoint, f, **options)
# book.py(使用红图)
from app.libs.redprint import Redprint
api = Redprint('book')
@api.route('/get')
def get_book():
return 'this is get book '
# v1/__init__.py(创建蓝图对象,并在蓝图对象中注册红图)
from flask import Blueprint
from app.api.v1 import book, user
def create_blueprint_v1():
bp_v1 = Blueprint('v1', __name__)
user.api.register(bp_v1)
book.api.register(bp_v1)
return bp_v1
# app.py(将蓝图注册到app对象中)
from flask import Flask
def register_blueprint(app):
from app.api.v1 import create_blueprint_v1
app.register_blueprint(create_blueprint_v1(), url_prefix='/v1') # 蓝图补充路由的前缀
def create_app():
app = Flask(__name__) # 指定位置信息
app.config.from_object('app.config.setting')
app.config.from_object('app.config.secure')
register_blueprint(app)
return app
Flask之RESTFul API前后端分离的更多相关文章
- Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)
Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享) 点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJK ...
- Restful and 前后端分离---AutoTest newman--postman
http://www.cnblogs.com/zuoshaowei/p/6192863.html https://www.getpostman.com/docs/newman_intro swagge ...
- 全栈的自我修养: 001环境搭建 (使用Vue,Spring Boot,Flask,Django 完成Vue前后端分离开发)
全栈的自我修养: 环境搭建 Not all those who wander are lost. 彷徨者并非都迷失方向. Table of Contents @ 目录 前言 环境准备 nodejs v ...
- Flask前后端分离项目案例
简介 学习慕课课程,Flask前后端分离API后台接口的实现demo,前端可以接入小程序,暂时已经完成后台API基础架构,使用postman调试. git 重构部分: token校验模块 auths认 ...
- Flask & Vue 构建前后端分离的应用
Flask & Vue 构建前后端分离的应用 最近在使用 Flask 制作基于 HTML5 的桌面应用,前面写过<用 Python 构建 web 应用>,借助于完善的 Flask ...
- 前后端分离与 restful api
为什么要前后端分离(优点): PC,APP,PAD 多端适应 单页面应用(Single Page Application)SPA开发模式开始流行 前后端开发职责不清 开发效率问题,前后端互相等待 前端 ...
- 前后端分离开发,基于SpringMVC符合Restful API风格Maven项目实战(附完整Demo)!
摘要: 本人在前辈<从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)>一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并 ...
- Flask + vue 前后端分离的 二手书App
一个Flask + vue 前后端分离的 二手书App 效果展示: https://blog.csdn.net/qq_42239520/article/details/88534955 所用技术清单 ...
- 关于flask(前后端分离)的后端开发的小白笔记整理(含postman,jwt,json,SQLAlchemy等)
首先是提醒自己的一些唠嗑: 学会劳逸结合,文档看累了可以看视频,动手操作很关键,遇到问题先动脑子冷静地想,不要跟着步骤都不带脑子,想不出来了再查一查!有时候打出来的代码很虚,但是实践不花钱,实践出真知 ...
随机推荐
- 高并发之——不得不说的线程池与ThreadPoolExecutor类浅析
一.抛砖引玉 既然Java中支持以多线程的方式来执行相应的任务,但为什么在JDK1.5中又提供了线程池技术呢?这个问题大家自行脑补,多动脑,肯定没坏处,哈哈哈... 说起Java中的线程池技术,在很多 ...
- ShiroConfig配置文件无法通过@Value加载yml变量的解决办法
/** * 配置Shiro生命周期处理器 * 使用springboot整合shiro时,@value注解无法读取application.yml中的配置 *解决方法:将LifecycleBeanPost ...
- 一台机器上同时运行两个tomcat
修改conf/server.xml文件,修改地方有三处 如图
- UnsupportedClassVersionError : 不支持的类版本错误
UnsupportedClassVersionError : 不支持的类版本错误 listenerStart配置类的应用程序侦听器时出错 listenerStart Error configuring ...
- thinkPHP中Model的字段映射问题
在model定义中不要自己定义相应的字段变量,因为一旦定义,之后的赋值会直接赋给自己定义的属性,但实际上model抽象类重写了__set()方法,将未定义的属性存入了$data里面,写入数据库是也会从 ...
- toj 3019 Hidden Password (最小表示法)
Hidden Password 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交: 53 测试通过: 19 描述 Some time the progr ...
- cesium1.65api版本贴地贴模型标绘工具效果(附源码下载)
前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...
- 同时安装了python和3,pycharm如何切换版本
1.打开pycharm 2.进入 File->Setting->Project:你的项目名->Project Interpreter 3.通过Project Interpreten ...
- ORACLE ANALYZE使用小结
ANALYZE的介绍 使用ANALYZE可以收集或删除对象的统计信息.验证对象的结构.标识表或cluster中的行迁移/行链接信息等.官方文档关于ANALYZE功能介绍如下: · ...
- 整理了Linux常用命令变量
查看信息命令 ls 查看当前目录下面的所有文件 -a 显示所有文件(包括隐藏文件) -l 显示所有文件(包括文件的详细信息) 格式: ls 参数 目录路径(绝对/相对) cd 切换目录 格式: cd ...

