介面與呼叫順序

2021-08-10 16:36:37 字數 2641 閱讀 6695

下面的介面方法是由tornado框架進行呼叫的,我們可以選擇性的重寫這些方法。

對應每個請求的處理類handler在構造乙個例項後首先執行initialize()方法。在講輸入時提到,路由對映中的第三個字典型引數會作為該方法的命名引數傳遞,如:

class profilehandler(requesthandler):

def initialize(self, database):

self.database = database

def get(self):

...(r'/user/(.*)', profilehandler, dict(database=database)),

])

此方法通常用來初始化引數(物件屬性),很少使用。預處理,即在執行對應請求方式的http方法(如get、post等)前先執行,注意:不論以何種http方式請求,都會執行prepare()方法

以預處理請求體中的json資料為例:

import json

class indexhandler(requesthandler):

def prepare(self):

self.json_dict = json.loads(self.request.body)

else:

self.json_dict = none

def post(self):

if self.json_dict:

for key, value in self.json_dict.items():

self.write("%s

" % (key, value))

def put(self):

if self.json_dict:

for key, value in self.json_dict.items():

self.write("%s

" % (key, value))

用post方式傳送json資料時:

用put方式傳送json資料時:

方法描述

get請求指定的頁面資訊,並返回實體主體。

head

類似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭

post

向指定資源提交資料進行處理請求(例如提交表單或者上傳檔案)。資料被包含在請求體中。post請求可能會導致新的資源的建立和/或已有資源的修改。

delete

請求伺服器刪除指定的內容。

patch

請求修改區域性資料。

put從客戶端向伺服器傳送的資料取代指定的文件的內容。

options

返回給定url支援的所有http方法。

在請求處理結束後呼叫,即在呼叫http方法後呼叫。通常該方法用來進行資源清理釋放或處理日誌等。注意:請盡量不要在此方法中進行響應輸出。

我們通過一段程式來看上面這些介面的呼叫順序。

class indexhandler(requesthandler):

def initialize(self):

print "呼叫了initialize()"

def prepare(self):

print "呼叫了prepare()"

def set_default_headers(self):

print "呼叫了set_default_headers()"

def write_error(self, status_code, **kwargs):

print "呼叫了write_error()"

def get(self):

print "呼叫了get()"

def post(self):

print "呼叫了post()"

self.send_error(200) # 注意此齣丟擲了錯誤

def on_finish(self):

print "呼叫了on_finish()"

在正常情況未丟擲錯誤時,呼叫順序為:

set_defautl_headers()

initialize()

prepare()

http方法

on_finish()

在有錯誤丟擲時,呼叫順序為:

set_default_headers()

initialize()

prepare()

http方法

set_default_headers()write_error()

on_finish()

Tornado 介面呼叫時方法執行順序

import tornado.web web服務 import tornado.ioloop i o 時間迴圈 class mainhandler tornado.web.requesthandler def initialize self,name self.name name print ini...

快遞查詢介面呼叫與解析

gotrace 快遞查詢介面介紹 下面分別介紹提供的兩種請求方式 第一種 請求返回xml格式的結果資料 請求位址方法名為 請求只接受post方式提交資料請求 請求引數 no 快遞單號,這個是你自己的快遞單號 資料以post方式提交到gotrace,可以直接寫乙個最簡單的html來測試的。可以向他們所...

Python介面的實現與呼叫

對於物件導向程式設計來說,有三個概念一定要知道 封裝 繼承和多型。python本身就是一種多型語言,即不同的類中可以定義相同的方法 函式 名稱。所謂介面是一種特殊的類,宣告了若干方法,要求繼承該介面的類必須實現這些方法,否則會報錯。具體 實現如下 from abc import abcmeta,ab...