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
原创粉丝点击