处理路由请求
固定路由
from flask import Flask
@app.route('/')
def index():
return "你好,欢迎访问"
if __name__=='__main__':
app.run(debug=False)
通过路由传入传出变量
from flask import Flask
app=Flask(__name__)
@app.route('/hello/<user>')
def hello(user):
return "你好,"+user
@app.route('/factorial/<n>')
def f(n:str):
try:
n=int(n)
except:
return "输入的 "+str(n)+" 无法计算阶乘"
x=1
for i in range(n):
x=x*(i+1)
return str(n)+" 的阶乘是 "+str(x)
@app.route('/addition/<a>+<b>')
def f2(a,b):
try:
a=float(a)
b=float(b)
except:
return "输入的 "+str(a)+" 和 "+str(b)+" 无法计算"
return "两数之和是"+str(a+b)
if __name__=='__main__':
app.run(debug=False)
测试:
在浏览器根据设定的规则输入网址,则会返回结果。
处理GET请求
from flask import Flask
from flask import request
app=Flask(__name__)
@app.route('/gettest',methods=['GET'])
def get():
try:
a=request.args.get('a')
b=request.args.get('b')
c=request.args.get('c')
print(a+b+c)
except:
return "数据错误"
return "请求数据为{},{},{}".format(a,b,c)
if __name__=='__main__':
app.run(debug=False)
测试
编辑另一个Python脚本,在另一个命令行窗口运行
测试脚本
import requests
u='http://127.0.0.1:5000//gettest'
p={'a':'一','b':'二','c':'三'}
res=requests.get(url=u,params=p)
print(res.text)
处理POST请求
from flask import Flask
from flask import request
app=Flask(__name__)
@app.route('/posttest',methods=['POST'])
def post():
try:
a=request.form.get('a')
b=request.form.get('b')
c=request.form.get('c')
print(a+b+c)
except:
return "数据错误"
return "请求数据为{},{},{}".format(a,b,c)
if __name__=='__main__':
app.run(debug=False)
测试
import requests
u='http://127.0.0.1:5000//posttest'
p={'a':'一','b':'二','c':'三'}
res=requests.post(url=u,data=p)
print(res.text)
接收用户上传文件
定义一个接收并保存用户上传文件的路由。
@app.route('/upload',methods=['GET','POST'])
def upload():
f=request.files.get('pic')
if f is None:
return '未上传文件'
f.save('./demo1.jpg')
print('用户上传了文件')
return '上传成功 '
测试代码:
import requests
#对应的接口网址
u='http://127.0.0.1:5000/upload'
#要上传的文件参数
f={
'pic':('pic01.jpg',open('pic01.jpg','rb'),'images/git')
}
#其他参数
d={
'nikename':'Tom',
'age':12,
'sex':'男'
}
res=requests.post(url=u,files=f,data=d)
print(res.text)