在Web服务访问时并不总是能够返回正确的结果,当用户访问了错误的URL,或者传输了错误的请求参数,Web服务就需要返回相关的错误信息进行提示。Flask中针对错误请求的场景提供了相关的API,包括标准错误的响应和标准重定向的响应处理。在Web服务中响应状态主要分为五大类,每一类都代表相关类型的响应
通常情况下1xx、2xx、4xx、5xx、6xx类的响应在Web服务中都已经有默认的实现,只有3xx类的响应需要人为配置。Flask提供的相关API可以针对3xx、4xx、5xx类的响应进行组装。通过flask. redirect函数可以方便地进行重定向响应的设置
from flask import Flask,redirect
@app.route('/hello')
def hello():
return redirect('/')
当用户访问示例中的'/hello'地址时,Web服务器会返回一个302的请求跳转响应,客户端获取到302响应后会读取响应头中的Location字段值,该值是一个新的跳转URL,客户端会进一步请求该URL地址,直到获取最终的响应内容。
Web服务中支持重定向的状态码除了302,还有301、307等。通过指定重定向状态码可以返回不同类型的重定向响应
@app.route('/hello')
def hello():
return redirect('/', 301) # 返回301 重定向
有时可能希望返回4xx或5xx类的响应,那么就可以通过flask.abort函数来实现。具体示例如下:
from flask import Flask,abort
@app.route('/')
def index():
return abort(404) # 返回404 响应
@app.route('/hello')
def hello():
return abort(500) # 返回500 响应
404时,访问/
500时,访问/