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前后端分离的更多相关文章

  1. Python Flask高级编程之RESTFul API前后端分离精讲 (网盘免费分享)

    Python Flask高级编程之RESTFul API前后端分离精讲 (免费分享)  点击链接或搜索QQ号直接加群获取其它资料: 链接:https://pan.baidu.com/s/12eKrJK ...

  2. Restful and 前后端分离---AutoTest newman--postman

    http://www.cnblogs.com/zuoshaowei/p/6192863.html https://www.getpostman.com/docs/newman_intro swagge ...

  3. 全栈的自我修养: 001环境搭建 (使用Vue,Spring Boot,Flask,Django 完成Vue前后端分离开发)

    全栈的自我修养: 环境搭建 Not all those who wander are lost. 彷徨者并非都迷失方向. Table of Contents @ 目录 前言 环境准备 nodejs v ...

  4. Flask前后端分离项目案例

    简介 学习慕课课程,Flask前后端分离API后台接口的实现demo,前端可以接入小程序,暂时已经完成后台API基础架构,使用postman调试. git 重构部分: token校验模块 auths认 ...

  5. Flask & Vue 构建前后端分离的应用

    Flask & Vue 构建前后端分离的应用 最近在使用 Flask 制作基于 HTML5 的桌面应用,前面写过<用 Python 构建 web 应用>,借助于完善的 Flask ...

  6. 前后端分离与 restful api

    为什么要前后端分离(优点): PC,APP,PAD 多端适应 单页面应用(Single Page Application)SPA开发模式开始流行 前后端开发职责不清 开发效率问题,前后端互相等待 前端 ...

  7. 前后端分离开发,基于SpringMVC符合Restful API风格Maven项目实战(附完整Demo)!

    摘要: 本人在前辈<从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)>一文的基础上,实现了一个基于Spring的符合REST风格的完整Demo,具有MVC分层结构并 ...

  8. Flask + vue 前后端分离的 二手书App

    一个Flask + vue 前后端分离的 二手书App 效果展示: https://blog.csdn.net/qq_42239520/article/details/88534955 所用技术清单 ...

  9. 关于flask(前后端分离)的后端开发的小白笔记整理(含postman,jwt,json,SQLAlchemy等)

    首先是提醒自己的一些唠嗑: 学会劳逸结合,文档看累了可以看视频,动手操作很关键,遇到问题先动脑子冷静地想,不要跟着步骤都不带脑子,想不出来了再查一查!有时候打出来的代码很虚,但是实践不花钱,实践出真知 ...

随机推荐

  1. [Redis-Python]发布订阅通过Redis异步发送邮件

    接收订阅 #!/usr/bin/env pyhton # coding:utf-8 # @Time : 2020-02-16 21:36 # @Author : LeoShi # @Site : # ...

  2. 《自拍教程29》Sublime_小脚本编写首选

    Sublime Sublime 是一个轻量.简洁.高效.跨平台的编辑器, 最新的是Sublime Text 3. Sublime对Python支持非常好,如果只是简单的编写批处理脚本编写, 或者小范围 ...

  3. 【转】Makefile步步为营

    Makefile步步为营 本目录主要包含Makefile一步步递进学习的示例代码 makefile代码实例:https://www.lanzous.com/i9m9npi step0:Makefile ...

  4. sklearn使用小贴士

    1 sklearn简介 Scikit-learn(sklearn)是机器学习中的第三方模块,封装了常用的机器学习算法,涉及回归.降维.分类以及聚类等,提供python接口. 虽然sklearn容纳的算 ...

  5. springCloud进阶(微服务架构&Eureka)

    springCloud进阶(微服务架构&Eureka) 1. 微服务集群 1.1 为什么要集群 为了提供并发量,有时同一个服务提供者可以部署多个(商品服务).这个客户端在调用时要根据一定的负责 ...

  6. iMacros 入门教程-基础函数介绍(3)

    imacros 的 PAUSE 函数用法 这个函数的作用是暂停程序的运行,也就是断点. 对于有时运行到某一步需要输入内容时,或者需要调试时非常有用 如果你混着 pause 和 wait 一起用,那么当 ...

  7. python格式化输出保留2位小数

    我是小白就不用多说了,学习python做了个练习题,结果运行了一遍,发现输入金额后得到的有很多位小数, 虽然不知道为什么,但是看得很不舒服, 就想到应该把让小数点后只保留2位数 找到了方法:将{0}改 ...

  8. LeetCode 面试题52. 两个链表的第一个公共节点

    题目链接:https://leetcode-cn.com/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/ 输入两个链表 ...

  9. Vue中echarts的使用

    1.安装 npm install echarts --save 2. 导入并挂载 <template>   <!-- 1. 为ECharts准备一个具备大小(宽高)的Dom --&g ...

  10. jquery.datetimepicker中报错Cannot read property 'top' of undefined

    今天在项目里用到一个jQuery的时间插件,一开始自己写的测试demo完全么的问题 但当我把它放到项目里时问题来了,报了一个错:Cannot read property 'top' of undefi ...