1.4.2 HTTP ERRORS AND REDIRECTS(HTTP 错误和重定向)
来源:互联网 发布:工业网络就业前景 编辑:程序博客网 时间:2024/05/29 04:33
abort()函数能直截了当的产生一个HTTP错误页面。
from bottle import route, abort@route('/restricted')def restricted(): abort(401, "Sorry, access denied.")
想要使客户端重定向到一个不同的URL,你可以发送一个303 See Other相应,用Location头部设置一个新的URL。redirect()能帮你干这个:
from bottle import redirect@route('/wrong/url')def wrong(): redirect("/right/url")
你也可以提供一个不同的HTTP状态码作为第二个参数。
注意:这俩函数都可以终止你的回调函数,通过触发HTTPError异常。
其它异常
所有不是HTTPResponse或是HTTPError的异常都会到500 Internal Server Error相应,所以它们不会中断你的WSGI服务器。你可以设置bottle.app().catchall为False来关闭这项功能。
响应对象
响应的元数据比如说HTTP状态码,响应头部和cookies都存在一个response对象里面传输给浏览器。你可以直接处理这些元数据或者用预定义的帮助模块来这样做。所有的API和细节列表都在API部分,但是最常用的部分和细节就在本节。
状态码
HTTP状态码控制着浏览器的行为,默认200是正常的。在大多数情况下你不需要手动设置manually属性,而是用abort()或是然会一个HTTPResponse实例来附带状态码。理论上任何整数都行,但是不在HTTP协议指定的状态码会让浏览器不知所措。
响应头
像Cache-Control或是Location这种相应头部都是通过Response.set)header()定义的。这个方法有两个参数,头部名和一个值。名字是大小写不敏感的。
@route('/wiki/<page>')def wiki(page): response.set_header('Content-Language', 'en') ...大多数头是唯一的,意味着每个名字只有一个头部被送到客户端。一些特殊的头部允许在相应中出现多次。用Response.add_header()而不是Response.set_header()来添加首部:
response.set_header('Set-Cookie', 'name=value')response.add_header('Set-Cookie', 'name2=value2')注意这仅仅是个例子。要真想用cookie,请接着读~
0 0