举例1,返回当前时间接口

'''
初始化:所有的Flask都必须创建程序实例,
web服务器使用wsgi协议,把客户端所有的请求都转发给这个程序实例
程序实例是Flask的对象,一般情况下用如下方法实例化
Flask类只有一个必须指定的参数,即程序主模块或者包的名字,__name__是系统变量,该变量指的是本py文件的文件名
'''
from flask import Flask
import datetime server=Flask(__name__) @server.route('/time',methods=['post','get'])
def get_time():
now=str(datetime.datetime.now())#把当前时间转换成字符串
return "当前的时间是:%s"%now server.run(port=8888)

执行后网页显示如下:

举例2:怎样跳转到你的网站

1、先写好一个HTML前端页面(例如我随便写了一个index.html放在了当前路径下)

2、写接口,返回html前端页面。

import flask

server=flask.Flask(__name__)

@server.route('/index')
def my_page():
f=open('index.html',encoding='utf-8')
res=f.read()
f.close()
return res server.run(port=8888)

3、执行后网页显示如下:

举例3:登录接口

flask获取请求参数、连接数据库

1、传参
2、执行sql查数据库(已有该表)
3、返回结果

import flask
import json
import tools server=flask.Flask(__name__) @server.route('/login',methods=['post'])
def login():
#登录需要两个参数,name和pwd
uname=flask.request.values.get('username')# 传参,前面的是变量,括号里面是key
passwd=flask.request.values.get('password')
#args只能获取到跟在url后面的参数,所以我们改用values if uname and passwd:# 非空为真
# 需要先写一个导入数据库的函数,例如我写了一个名称为tools的函数(如图),放在另一个python文件中,import tools进行调用。当然也可以直接写在本python文件中,但是显得会累赘。
sql="SELECT * FROM app_myuser WHERE username='%s' AND passwd='%s';"%(uname,passwd)
result = tools.my_db(sql)#执行sql
if result:
res={"error_code":1000,"mag":"登录成功"}# 接口返回的都是json,所以要这样写。先导入json模块,import json。
else:
res = {"error_code": 3001, "mag": "账号或密码错误!"}
else:
res={"error_code":3000,"mag":"必填参数未填,请查看接口文档!"} return json.dumps(res,ensure_ascii=False)#防止出现乱码;json.dumps()函数是将字典转化为字符串 server.run(port=8888)

操作数据库的函数如图:

import pymysql

def my_db(sql):
conn=pymysql.connect(
host='118.24.3.40',
user='jxz',
password='',
db='jxz',
charset='utf8',
autocommit=True# 自动提交 )
cur=conn.cursor(cursor=pymysql.cursors.DictCursor)# 建立游标;默认返回二维数组,DictCursor指定返回字典;
cur.execute(sql)#execute帮你执行sql
res=cur.fetchall()#拿到全部sql执行结果
cur.close()# 关闭游标
conn.close()# 关闭数据库
return res # 返回sql执行的结果

调用接口服务如图(借助postman):

举例4:新增学生接口

flask获取请求参数、连接数据库;入参是json类型,参数有限制。

import flask
import json
import tools server=flask.Flask(__name__) @server.route('/add_student',methods=['post'])
def add_student():
params=flask.request.json #入参是字典json时用它,下面的代码要判断传入的参数是否是json类型
if params:
name=params.get('name')
sex=params.get('sex','男')# 如果没有传。默认值是男
age=str(params.get('age'))# int
addr=params.get('addr')
grade=params.get('grade')
phone=str(params.get('phone'))# 最少11位,不能重复
gold=str(params.get('gold',500)) # 金币可以是小数,如果没有传默认是500 if name and age and addr and grade and phone:# 必填参数校验 if sex not in['男','女']: #如果性别不是男或者女
res = {"error_code": 3003, "msg": "性别只能是男或者女"}
elif not age.isdigit():# 如果不是整数类型
res = {"error_code": 3004, "msg": "年龄输入错误"}
elif len(phone)!=11 or not phone.isdigit():
res = {"error_code": 3005, "msg": "手机号输入错误"}
elif not gold.isdigit() and not tools.check.float(gold):#如果不是整数也不是小数
res = {"error_code": 3006, "msg": "金币输入错误"}
else:
sql="select* from app_student where phone='%s';"%phone #查看数据库中是否有这个手机号,有的话说明重复
result = tools.my_db(sql) # 执行sql
if result:
res = {"error_code": 1000, "msg": "手机号已经存在"}
else:
sql = "INSERT INTO app_student(NAME,sex,age,addr,grade,phone,gold)VALUES('%s','%s',%s,'%s','%s',%s,'%s')" % (
name, sex, age, addr, grade, phone, gold)
tools.my_db(sql)
res = {"error_code": 200, "msg": "新增成功! "}
else:
res = {"error_code": 3007, "msg": "必填参数未填写"}
else:
res={"error_code":3002,"msg":"入参必须是json类型"}
return json.dumps(res,ensure_ascii=False)#防止出现乱码 server.run(port=8888)

调用接口服务如图(借助postman):

举例5:上传文件接口

上传文件时加上当前日期

import flask
import json
import datetime server=flask.Flask(__name__) def file_upload():
f=flask.request.files.get('wjm',None)# 上传文件,取一个名字,再给名字一个默认值None
if f:# 如果文件不为空
cur_time=datetime.datetime.now().strftime("%Y%m%d%H%M%S")# 如果上传同一个文件两次,会被覆盖,所以加一个当前日期,并指定日期格式strftime("%Y%m%d%H%M%S")
new_file_name=cur_time+f.filename# 新文件名=时间+原来的文件名
f.save(new_file_name)#保存文件
res={"msg":"文件上传成功"}
else:
res={"msg":"没有上传文件"}
return json.dumps(res,ensure_ascii=False)#防止出现乱码 server.run(port=8888)

调用接口服务如图(借助postman):

python学习笔记:接口开发——flask Demo实例的更多相关文章

  1. python学习笔记十三:Flask demo

    一.Flask简介 Flask 是一个 Python 实现的 Web 开发微框架.官网:http://flask.pocoo.org/ 二.Demo 1.代码结构 . ├── blog.py ├── ...

  2. Python学习之==>接口开发

    一.开发接口的作用 1.在别的接口没有开发完成的时候可以模拟一些接口以便测试已经开发完成的接口,例如假的支付接口,模拟支付成功.支付失败. 2.了解接口是如何实现的:数据交互.数据返回 3.开发给别人 ...

  3. Python学习笔记_05:使用Flask+MySQL实现用户登陆注册以及增删查改操作

    前言:本文代码参考自两篇英文博客,具体来源点击文末代码链接中文档说明. (PS:代码运行Python版本为2.7.14) 运行效果: 首页: 注册页面: 登陆界面: 管理员登陆后界面: 添加.删除.修 ...

  4. OpenCV之Python学习笔记

    OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书< ...

  5. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  6. 【python学习笔记】7.更加抽象

    [python学习笔记]7.更加抽象 类的定义就是执行代码块 在内存保存一个原始实例,可以通过类名来访问 类的实例化,是创建一个原始实例的副本, 并且所有成员变量与原始实例绑定 通过修改实例变量,可以 ...

  7. python学习笔记4_类和更抽象

    python学习笔记4_类和更抽象 一.对象 class 对象主要有三个特性,继承.封装.多态.python的核心. 1.多态.封装.继承 多态,就算不知道变量所引用的类型,还是可以操作对象,根据类型 ...

  8. Python学习笔记九

    Python学习笔记之九 为什么要有操作系统 管理硬件,提供接口. 管理调度进程,并且将多个进程对硬件的竞争变得有序. 操作系统发展史 第一代计算机:真空管和穿孔卡片 没有操作系统,所有的程序设计直接 ...

  9. Deep learning with Python 学习笔记(10)

    生成式深度学习 机器学习模型能够对图像.音乐和故事的统计潜在空间(latent space)进行学习,然后从这个空间中采样(sample),创造出与模型在训练数据中所见到的艺术作品具有相似特征的新作品 ...

随机推荐

  1. nginx 配置代理 session 丢失

    最开始一直用的ip访问的项目是没问题的  , 后来改成用了域名访问就发现一直获取不了session ,最开始以为是跨域问题 , 但项目中已经配置了跨域 , 因为第一次用 nginx  ,果断入坑了 , ...

  2. maven(一),maven3.5.3的windows安装及Eclipse集成

    maven用了好长时间,需要系统的学习一下.maven ,是一个项目构建的工具,是一个项目管理和综合工具,具有项目生命周期管理功能. maven现在到了3.5.3,就以这个版本进行. 一.下载mave ...

  3. python3-三个demo带你入门装饰器

    装饰器入门 在不修改程序源代码和程序调用方式的情况下,扩展程序功能时不得不用到装饰器. python中的装饰器可谓功能强大,强大到刚接触它就被它弄得措手不及. 但是,静下心来好好研究,那可是回味无穷. ...

  4. maven项目使用tomcat启动报错:Server Tomcat v8.5 Server at localhost failed to start

    背景说明:1)该项目为maven项目,使用的maven的本地仓库里有不少之前使用过下载的jar包: 2)从svn下载该项目后,无报错情况: 3)部署到tomcat启动报错 如下 : 4)在网上搜索了很 ...

  5. PHP 算式验证码

    这里不多说,直接上代码! /** * 改造的加减法验证类 * 使用示例 VerifyCode::get('xxx', 20); * 验证示例 VerifyCode::check('1', 'xxx') ...

  6. java虚拟机规范(se8)——java虚拟机的编译(四)

    3.12 抛出和处理异常 在程序中使用throw关键字来抛出异常.编译结果很简单. void cantBeZero(int i) throws TestExc { if (i == 0) { thro ...

  7. 讲真,下次打死我也不敢随便改serialVersionUID了

    讲真,下次打死我也不敢随便改serialVersionUID了 码农沉思录 码农沉思录 微信号 code-thinker 功能介绍 笔者为国内某知名企业不知名码农,专注Java Web领域多年,有丰富 ...

  8. SQL优化:一篇文章说清楚Oracle Hint的正确使用姿势

    一.提示(Hint)概述 1为什么引入Hint? Hint是Oracle数据库中很有特色的一个功能,是很多DBA优化中经常采用的一个手段.那为什么Oracle会考虑引入优化器呢?基于代价的优化器是很聪 ...

  9. /etc/fstab自动挂载文件

    装了Windows 10和Ubuntu双系统,想把win10下的“文娱“盘自动开机挂载到Ubuntu上. 首先你看一下/etc/fstab这个文件喽: 依葫芦画瓢呗.首先看看你要挂载的硬盘是哪一块: ...

  10. Java的动态代理Proxy

    概念梳理: 1.什么是动态代理? 答:动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实.代理一般会实现它所表示的实际对象的接口.代理可以访问实际对象,但是延迟实现实际对象的部分功能,实际 ...