tornado請求頭/狀態碼/接口 筆記


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()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM