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. CentOS7.3下yum安装MariaDB10.3.12并指定utf8字符集

    添加MariaDB的yum源,指定安装的版本,然后使用 yum 工具进行安装 参考MariaDB官方网站对应安装方法和步骤 https://downloads.mariadb.org/mariadb/ ...

  2. h5笔记1

    1.HTML中不支持 空格.回车.制表符,它们都会被解析成一个空白字符 2.适用于大多数 HTML 元素的属性: class 为html元素定义一个或多个类名(classname)(类名从样式文件引入 ...

  3. 浅谈 k8s ingress controller 选型

    大家好,先简单自我介绍下,我叫厉辉,来自腾讯云.业余时间比较喜欢开源,现在是Apache APISIX PPMC.今天我来简单给大家介绍下 K8S Ingress 控制器的选型经验,今天我讲的这些内容 ...

  4. 一篇文章带你搞定 ElasticSearch 术语

    这篇文章主要介绍 ElasticSearch 的基本概念,学习文档.索引.集群.节点.分片等概念,同时会将 ElasticSearch 和关系型数据库做简单的类比,还会简单介绍 REST API 的使 ...

  5. 解决.net core3.1使用docker部署在Ubuntu上连接sqlserver报error:35的问题

    最近把一个项目从core2.2迁移至core3.1,在本地win上跑没有问题,但是上线到生产Ubuntu docker环境下连接不上sqlserver报以下错误. A connection was s ...

  6. Vue.js 起步

    通过实例来看下 Vue 构造器中需要哪些内容 测试时这段代码我直接写在index.html中 <!DOCTYPE html> <html> <head> <m ...

  7. 同一台电脑安装python2&python3

    [安装之前,先了解一下概念] python是什么? Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. ...

  8. 如何利用Azure DevOps快速实现自动化构建、测试、打包及部署

    前两天有朋友问我,微软的Azure好用吗,适不适合国人的使用习惯,我就跟他讲了下,Azue很好用,这也是为什么微软云营收一直涨涨涨的原因,基本可以再1个小时内实现自动化构建.打包以及部署到Azure服 ...

  9. Javaweb项目中修改表单时数据回显方法

    1.前言 先来说下什么是数据回显,比如我要修改我的个人信息,点击修改按钮后进入修改界面,在这个界面中直接将原来的信息显示在表单中,而不是空表单,这就是数据回显 2.思路 当点击修改的时候,从数据库中查 ...

  10. vue 父子通信

    节制地使用 $parent 和 $children - 它们的主要目的是作为访问组件的应急方法.更推荐用 props 和 events 实现父子组件通信