set_header()/set_default_headers()
set_header():設置請求頭數據
set_default_headers():設置默認請求頭數據
import tornado.web import tornado.ioloop import tornado.options import tornado.httpserver import os from tornado.options import options from tornado.web import RequestHandler tornado.options.define('port', type=int, default=8000, help="服務器端口") class IndexHandler(RequestHandler): # 設置默認的headers請求頭 def set_default_headers(self): # 設置請求頭 self.set_header('Content-Type', 'application/json') self.set_header('name', 'namejr') def get(self): self.set_header('name', 'jr') # 設立會更改請求頭的name屬性(覆蓋) self.write('OK') if __name__ == '__main__': tornado.options.parse_command_line() app = tornado.web.Application([ (r'/', IndexHandler), ], debug=True, ) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.current().start()
set_status(status_code, reason=None)
# 當set_status()中的參數status_code使用的是標准的http中的狀態碼時,可以不寫reason,否則要寫
200 | OK | 請求成功 |
301 | Moved Permanently | 資源被永久移動到新的位置 |
304 | Not Modified | 有緩存的情況下訪問 |
400 | Bad Request | 請求有問題 |
401 | Unauthorized | 用戶驗證 |
403 | Forbidden | 禁止訪問 |
404 | Not Found | 請求失敗(常見頁面不存在) |
405 | Method Not Allowed | 請求方式有問題 |
500 | Internal Server Error | 服務器內部問題 |
send_error(status_code, **kwargs)和write_error(status_code, **kwargs)
send_error(status_code, **kwargs) # 主動拋出錯誤信息,后面的代碼不會被執行
write_error(status_code, **kwargs) # 拋出錯誤信息,程序不會暫停
# 測試過就會發現,如果使用的是框架自定義的self.send_error()/self.wrtie_error()就會發現,**kwargs不會顯示。這種情況下,我們可以進行自定義
import tornado.web import tornado.ioloop import tornado.options import tornado.httpserver from tornado.options import options from tornado.web import RequestHandler tornado.options.define('port', type=int, default=8000, help="服務器端口") class IndexHandler(RequestHandler): # 自定義write_error def write_error(self, scode, **kwargs): self.write('錯誤狀態碼: {}'.format(scode)) self.write('錯誤原因: {}'.format(kwargs['content'])) def get(self): self.write_error(404, content='未找到網頁') self.write('OK') if __name__ == '__main__': tornado.options.parse_command_line() app = tornado.web.Application([ (r'/', IndexHandler), ], debug=True) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.current().start()
接口:
initialize() 初始化參數
prepare() 在調用請求前的預處理
on_finish() 在調用請求后的處理
請求(HTTP)的方法有:
get() 獲取資源
port() 傳輸實體文本
delete() 刪除文件
put() 傳輸文件
head() 獲得報文首部
options() 詢問請求方法
trace() 追蹤路徑
connect() 要求用連接協議連接代理
執行的循序:initialize() -> prepare() -> http方法(該方法中可以調用write_error()/send_error()) -> on_finish()