一、前言

为了让有django或其他python web框架开发经验的同学快速上手flask接口开发,所以有了写这篇文章的想法。本文不会讲理论知识,一切以实用、快速上手为主。

注意:文本只讲前后端分离的接口开发。

二、flask环境准备

1.pip install flask

Flask 是一个轻量级 Web 应用程序框架,用来写接口再合适不过了。

官网:https://flask.palletsprojects.com/en/1.1.x/

2.pip install flask-login

flask的登录鉴权操作一般都是用flask-login模块,我们就不必再造这个轮子了。

官网:https://flask-login.readthedocs.io/en/latest/

3.pip install flask-restful

flask-restful是用于快速构建restful api的框架,相当于django的drf。

官网:http://www.pythondoc.com/Flask-RESTful/index.html

4.pip install sqlalchemy

非常灵活强大的ORM框架

官网:https://www.sqlalchemy.org/

5.pip install flask-sqlalchemy

为了在flask中更方便的使用sqlalchemy,对其进行了轻量级封装

官网:https://flask-sqlalchemy.palletsprojects.com/en/2.x/

三、快速上手

1.HelloWorld

在项目中新建一个main.py,做为程序的入口

from flask import Flask
from flask_restful import Resource, Api# 创建Flask应用
app = Flask(__name__)
# 使用flask_restful创建api对象,用于注册路由
api = Api(app)# 编写类视图
class HelloWorldView(Resource):def get(self):return "HelloWorld"# 注册路由
api.add_resource(HelloWorldView, r"/hello")if __name__ == '__main__':app.run(port=8716, host='0.0.0.0')

2.接收参数

1.接收url中的参数,/hello?name=狡猾的皮球&age=24

from flask import Flask, request
from flask_restful import Resource, Api# 创建Flask应用
app = Flask(__name__)
# 使用flask_restful创建api对象,用于注册路由
api = Api(app)# 编写类视图
class HelloWorldView(Resource):def get(self):name = request.args.get("name")age = request.args.get("age")gender = request.args.get("gender", default="默认值")print(name, age, gender)return "HelloWorld"# 注册路由
api.add_resource(HelloWorldView, r"/hello")if __name__ == '__main__':app.run(port=8716, host='0.0.0.0')

运行结果:

2.接收post请求application/json类型的json参数:

# 其他代码略class HelloWorldView(Resource):def get(self):# 代码略...def post(self):name = request.json.get("name")age = request.json.get("age")gender = request.json.get("gender")return f"Post请求接收的参数,name:{name},age:{age},gender:{gender}"

请求结果:

3.返回json类型给前端

class HelloWorldView(Resource):def get(self):# 代码略...def post(self):name = request.json.get("name")age = request.json.get("age")gender = request.json.get("gender")return {"code": 200,"msg": "请求成功","data": {"name": name,"age": age,"gender": gender}}

请求结果:

4.配置文件的加载

使用 app.config.from_object("configs") ,flask会将同级目录下的configs.py文件当做配置文件。

配置文件的大致结构configs.py(具体配置项请看flask官方文档):

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
# debug 模式
DEBUG = True
# 数据库
SQLALCHEMY_DATABASE_URI = ""
# 其他数据库
SQLALCHEMY_BINDS = ""
SQLALCHEMY_TRACK_MODIFICATIONS = True
# SQLALCHEMY_ECHO=True
# REDIS配置
REDIS_CFG = ""
# 接口不返回ascii
RESTFUL_JSON = dict(ensure_ascii=False)

在项目中引用配置,比如获取DEBUG的值:

app.config.get("DEBUG")

5.数据的增删改查(简单演示)

使用flask_sqlalchemy进行数据库操作,需要先做以下几件事情:

1.在配置文件configs.py中配置数据库的连接参数,例如:

SQLALCHEMY_DATABASE_URI="mysql://用户名:密码@127.0.0.1:3306/数据库名"

2.编写model类,假如现有student表:

# 编写model
class Student(db.Model):"""学生表"""__tablename__ = 'student'id = db.Column(db.Integer, primary_key=True)name = db.Column(db.Text)  # 姓名gender = db.Column(db.Integer)  # 性别

查询所有学生:

if __name__ == '__main__':# 查询所有学生students = Student.query.all()for student in students:print(student.name)

运行结果:

李逍遥
赵灵儿
林月如
阿奴
王小虎
沈欺霜
苏媚

查询性别为女的学生名称:

    # 查询性别为女的学生students = Student.query.filter(Student.gender == "女")for student in students:print(student.name)

运行结果:

赵灵儿
林月如
阿奴
沈欺霜
苏媚

新增姓名为唐雪见的女性学生:

    # 新增唐雪见student = Student(name="唐雪见",gender="女")db.session.add(student)db.session.commit()

结果:

把唐雪见的性别修改为男:

    student = Student.query.filter(Student.name == "唐雪见").first()student.gender = "男"db.session.commit()

结果:

删除唐雪见:

    student = Student.query.filter(Student.name == "唐雪见").first()db.session.delete(student)db.session.commit()

完整代码:

from flask import Flask, request
from flask_restful import Resource, Api
from flask_sqlalchemy import SQLAlchemy# 创建Flask应用
app = Flask(__name__)
# 加载配置文件
app.config.from_object("configs")
# 创建sqlalchemy对象
db = SQLAlchemy(app)
# 使用flask_restful创建api对象,用于注册路由
api = Api(app)# 编写类视图
class HelloWorldView(Resource):def get(self):name = request.args.get("name")age = request.args.get("age")gender = request.args.get("gender", default="默认值")print(name, age, gender)return "HelloWorld"def post(self):name = request.json.get("name")age = request.json.get("age")gender = request.json.get("gender")return {"code": 200,"msg": "请求成功","data": {"name": name,"age": age,"gender": gender}}# 编写model
class Student(db.Model):"""学生表"""__tablename__ = 'student'id = db.Column(db.Integer, primary_key=True)name = db.Column(db.Text)  # 姓名gender = db.Column(db.Integer)  # 性别# 注册路由
api.add_resource(HelloWorldView, r"/hello")if __name__ == '__main__':app.run(port=8716, host='0.0.0.0')# 查询所有学生# students = Student.query.all()# for student in students:#     print(student.name)# 查询性别为女的学生# students = Student.query.filter(Student.gender == "女")# for student in students:#     print(student.name)# 新增唐雪见# student = Student(name="唐雪见",gender="女")# db.session.add(student)# db.session.commit()# 删除唐雪见# student = Student.query.filter(Student.name == "唐雪见").first()# db.session.delete(student)# db.session.commit()

flask接口开发快速上手相关推荐

  1. Netron开发快速上手(一):GraphControl,Shape,Connector和Connection

    版权所有,引用请注明出处:<<http://www.cnblogs.com/dragon/p/5203663.html >> 本文所用示例下载FlowChart.zip 一个用 ...

  2. Java开发快速上手

    Java开发快速上手 前言 1.我的大学 2.对初学者的建议 3.大牛的三大特点 4.与他人的差距 第一章 了解Java开发语言 前言 基础常识 1.1 什么是Java 1.1.1 跨平台性 1.2 ...

  3. 小程序|云开发快速上手

    文章目录 前言 云开发快速上手 注册微信小程序 注册页面:小程序注册页面 后台管理页:小程序后台管理登录页 必备工具与云开发文档 体验云开发模板小程序 开通云开发服务 找到云开发的环境 ID 指定小程 ...

  4. mongodb 输出数组字段_三分钟 mongodb 开发快速上手

    三分钟 mongodb 开发快速上手 小熊昨天晚上做了一个非常真实的噩梦,有读者朋友催我"怎么又没有发文!让我们等的好辛苦",今天一睁开眼眼看后台留言,特么,居然是真的! 我bil ...

  5. 《Iphone SDK3开发快速上手》

    <Iphone SDK3开发快速上手> --iPhone SDK 3 Visual QuickStart Guide 译者:(美)Duncan Campbell   著 刘红伟 等译 IS ...

  6. 《Unity2018AR与VR开发快速上手》随书内容资源相关说明

    我的第二本书,<Unity2018AR与VR开发快速上手>终于上市了,现在天猫和京东都有卖. 随书资源的百度盘链接被关闭了,只给了个"此链接分享内容可能因为涉及侵权.色情.反动. ...

  7. 《Unity 2018 AR与VR开发快速上手》简介

    #好书推荐##好书奇遇季#<Unity 2018 AR与VR开发快速上手>,京东当当天猫都有发售. Unity3D是由Unity Technologies公司开发的一款跨平台的游戏行业软件 ...

  8. 微信小程序开发快速上手

    微信小程序开发快速上手 由于学生工作需要,我最近在一些工具书的参考帮助下尝试进行了微信小程序的开发,本文主要内容为我本人在近期微信小程序开发的过程中,关于指定类型的微信小程序开发的一点心得体会. 1. ...

  9. 《Unity3D平台AR开发快速上手--基于EasyAR4.0》随书资源和相关说明

    新手<Unity3D平台AR开发快速上手–基于EasyAR4.0>上市了,现在京东和淘宝都有卖.书分为2个部分,第一部分是EasyAR4.0基础内容和使用,第二部分是利用EasyAR的稀疏 ...

最新文章

  1. Swift3.0语言教程获取字符串编码与哈希地址
  2. 自下而上归并排序 数组实现
  3. 主机关机后第二天就无法开机_iphone没电自动关机后无法充电和开机的解决办法!(亲身经历)...
  4. dataframe 控对象_iOS知识 - 常用小技巧大杂烩
  5. 沈南鹏问了微软CEO四个问题
  6. 【opencv】图像处理之伽马变换
  7. JQuery EasyUI 扩展方法 日期控件 设置时间段函数
  8. 天学网 语音算法工程师面经
  9. 计算机辅助翻译 教学大纲,《计算机辅助翻译》本科课程教学大纲翻译本科.doc...
  10. depmod 生成 modules.dep
  11. java判断接口地址是否存在_java.util.Iterator接口中的hashNext()方法是用来判断集合中是否存在下一个元素的()_学小易找答案...
  12. 搭建开源物联网平台教程
  13. CMake入门使用(一)安装及HelloWorld的构建
  14. model.compile
  15. 服务器系统信息查询命令
  16. 建站影视cms网站源码(含安装说明文档)
  17. 全球与中国胶原蛋白敷料市场深度研究分析报告
  18. 信息安全三要素CIA
  19. 手机号,身份证号,姓名等校验
  20. 站长必看:竞价只靠钱来砸实在是太傻了!

热门文章

  1. AutoCAD 2009中文版基础入门教程下载
  2. 韶关监控机房动环系统方案
  3. OpenCV实战系列——拟合直线
  4. 解决三星note5无线充电偶尔充不进去的问题
  5. C++发送HTTP请求---亲测可行
  6. 7.0窗口改变大小 axure rp_用axurerp7.0设计android界面原型时怎么设置尺寸
  7. 服务器数据丢失了如何处理?
  8. 【javascript】事件环eventloop开餐厅版本总结
  9. Python爬虫 输入城市 获取对应KFC餐厅名字及地址 -- KFC店铺位置抓取
  10. linux4.4 内核模块,编译Linux内核4.4实现可读NTFS