Flask框架用法,@app.route and app.run

客户端和服务端:使用者透过调制解调器等设备上网,在浏览器中输入网址,通过HTTP 通讯协议向网站提出浏览网页的要求(Request)。网站收到使用者的要求后,将使用者要浏览的网页数据传输给使用者,这个动作称为响应(Response)。网站提供网页数据的服务,使用者接受网站所提供的数据服务;所以使用者在这里就是客户端,响应使用者要求的网站即称为服务端。
路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程。我的理解就是为用户请求的URL找出其对应的处理函数之意
@app.route注册路由就是建立URL规则和处理函数之间的关联。Flask框架依赖于路由 完成HTTP请求的分发.

@app.route和app.add_url_rule参数:
            rule,                       URL规则
            view_func=None,                  视图函数名称
            defaults=None,              默认值,当URL中无参数,函数需要参数时,使用defaults={'k':'v'}为函数提供参数
            endpoint=None,              名称,用于反向生成URL,即: url_for('名称')
            methods=None,               允许的请求方式,如:["GET","POST"]
            

            strict_slashes=None,        对URL最后的 / 符号是否严格要求,
                                        如:
                                            @app.route('/index',strict_slashes=False),
                                                访问 http://www.xx.com/index/ 或 http://www.xx.com/index均可
                                            @app.route('/index',strict_slashes=True)
                                                仅访问 http://www.xx.com/index 
            redirect_to=None,           重定向到指定地址
                                        如:
                                            @app.route('/index/<int:nid>', redirect_to='/home/<nid>')def func(adapter, nid):
                                                return "/home/888"
                                            @app.route('/index/<int:nid>', redirect_to=func)
            subdomain=None,             子域名访问
from flask import Flask
#Flask构造函数的第一个参数指定一个引入名/importname。Flask框架使用这个名字进行静态资源、模板、
#错误信息的定位。除非你清楚的理解它的作用,通常情况下,我们总应该使用特殊变量__name__
app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>You found me</h1>'

if __name__ == '__main__':
    app.run()

Flask框架用法之一
客户端发送图像文件

import requests
import json
#resp = requests.post("http://localhost:5000",files={"file": open('demo.bmp','rb')})
resp = requests.post("http://localhost:5000/predict",files={"file": open('demo.bmp','rb')})
res = json.loads(resp.content)
print(res['class_id'])

服务端收到图像文件,处理并返回结果

from flask import Flask, jsonify, request
app = Flask(__name__)
#@app.route('/',methods = ['POST'])
#predict是对客户端的不同请求的命名,也可以是get_data,print,save等等
@app.route('/predict',methods = ['POST'])
def predict():
    if request.method == 'POST':
        file = request.files['file']
        img_bytes = file.read()
        #此处可添加处理函数
        return jsonify({'class_id': 'POCESS_IMAGE_RESULT'})
 #可以使用花生壳把内网主机地址和端口映射外网访问地址,为了防止ip动态分配,可以使用'127.0.0.1',注意是HTPP协议
if __name__ == '__main__':
   app.run(host='127.0.0.1', port=5000)

动态参数路由

from flask import url_for
# 访问地址 : http://127.0.0.1:5000/info/1
@app.route("/info/<int:nid>", methods=["GET", "POST"], endpoint="r_info")
def student_info(nid):
    print(url_for("r_info",nid=2))  # /info/2
    return f"Hello Old boy {nid}"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值