【9】Python接⼝开发:flaskDemo实例
举例1,返回当前时间接⼝
'''
初始化:所有的Flask都必须创建程序实例,
web服务器使⽤wsgi协议,把客户端所有的请求都转发给这个程序实例
程序实例是Flask的对象,⼀般情况下⽤如下⽅法实例化
Flask类只有⼀个必须指定的参数,即程序主模块或者包的名字,__name__是系统变量,该变量指的是本py⽂件的⽂件名
'''
from flask import Flask
import datetime
server=Flask(__name__)
@ute('/time',methods=['post','get'])
def get_time():
now=str(w())#把当前时间转换成字符串
return"当前的时间是:%s"%now
server.run(port=8888)
执⾏后⽹页显⽰如下:
举例2:怎样跳转到你的⽹站
1、先写好⼀个HTML前端页⾯(例如我随便写了⼀个index.html放在了当前路径下)
2、写接⼝,返回html前端页⾯。
import flask
server=flask.Flask(__name__)
@ute('/index')
def my_page():
f=open('index.html',encoding='utf-8')
ad()
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__)
@ute('/login',methods=['post'])
def login():
#登录需要两个参数,name和pwd
('username')# 传参,前⾯的是变量,括号⾥⾯是key
('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 = _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):
t(
host='118.24.3.40',
user='jxz',
password='123456',
db='jxz',
charset='utf8',
autocommit=True# ⾃动提交
)
cur=conn.cursor(cursor=pymysql.cursors.DictCursor)# 建⽴游标;默认返回⼆维数组,DictCursor指定返回字典;
res=cur.fetchall()#拿到全部sql执⾏结果
cur.close()# 关闭游标
conn.close()# 关闭数据库
return res # 返回sql执⾏的结果
调⽤接⼝服务如图(借助postman):
举例4:新增学⽣接⼝
app开发实例flask获取请求参数、连接数据库;⼊参是json类型,参数有限制。
import flask
import json
import tools
server=flask.Flask(__name__)
@ute('/add_student',methods=['post'])
def add_student():
quest.json #⼊参是字典json时⽤它,下⾯的代码要判断传⼊的参数是否是json类型
if params:
('name')
('sex','男')# 如果没有传。默认值是男
age=('age'))# int
('addr')
('grade')
phone=('phone'))# 最少11位,不能重复
gold=('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 = _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)
<_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():
('wjm',None)# 上传⽂件,取⼀个名字,再给名字⼀个默认值None
if f:# 如果⽂件不为空
cur_time=w().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):
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论