1. HTTP请求

查询字符串
URL https://undefined.im/hello?name=Lily 中的?name=Lily即为查询字符串(query string)

一个完整的请求:

浏览器发送请求(request),报文(message)在浏览器和服务器之间传输,服务器根据请求返回的数据为响应报文(response message)。

常见的HTTP方法:

方法用途
GET获取资源
POST发送数据
PUT传输文件
DELETE删除资源
HEAD获得报文头部
OPTIONS询问支持的方法

Flask中的请求对象request

获取请求URL中的查询字符串参数:

request.args.get('name','默认值')
print request.args 
# {'name':value}

flask routes 命令
使用flask routes 命令可以查看所有路由

视图函数同时监听GET请求和POST请求:

@app.route('/api',methods=['GET','POST'])
def api():
    ...

转换器的使用:
转换器通过使用<转换器:变量名>(<int:age>)把变量转换成为整数。

@app.route('/api/<int:age>')
def api():
    ...

any 转换器:
any转换器可以设置可选值。

@app.route('/api/<any(blog,page,media):data>')
def api(data):
    ...

# 另外一种方式
dataType = ['blog','page','media']
@app.route('/api/<any(%s):data>'%str(data)[1:-1])
def api(data):
    ...

请求钩子
Flask 默认实现的5种请求钩子

钩子类型作用
before_first_request注册一个在第一个请求之前触发的函数
before_request注册一个在每个请求之前触发的函数
after_request注册一个如果没有异常抛出,则在请求之后触发的函数
teardown_request注册一个在每个请求之后触发的函数,如果发生异常,异常对象将作为参数
after_this_request在视图函数内注册一个在这个请求结束后出发的函数

注册一个钩子的基本示例

@app.before_request
def doSomething():
    pass
# 这个函数将在每个请求处理之前触发

2.HTTP 响应

视图函数可以返回最多由三个元素组成的元组:响应主体、状态码、首部字段。其中首部字段可以为字典,或是两元素元组组成的列表。

手工指定响应状态码

@app.route('/hello')
def hello():
    ...
    return 'hello'
    # 默认状态码为200

@app.route('/hello')
def hello():
    ...
    return 'hello',201
    # 指定状态码为201

重定向的方法

@app.route('/hello')
def hello():
    ...
    return redirect('https://notekit.cn/',302)
    # 重定向

@app.route('/hi')
def hi():
    ...
    return redirect(url_for('hello'))
    # 重定向到某个视图函数

标签: none

分享到: