1. 程式人生 > >tornado獲取get,post,位址列,headers中的資訊

tornado獲取get,post,位址列,headers中的資訊

# tornado讀取客戶端提交的訪問引數演示
#獲取引數用 arg=self.get_query_argumnet()  -----get方式
#args=self.get_query_arguments()      -----get方式
#異常,不傳遞引數時的處理
#post方式獲取引數
'''
前端方式提交post的時候,會以name的值的屬性為鍵,input中的值為值傳遞給後臺
真正的post到後臺的資料時放到請求體中的
arg=self.get_body_argument()
args=self.get_body_arguments()



-----------------------------------------------
第三種取參
先獲取位址列中的內容,在取請求體中的內容
 #get_argument = get_query_argument+get_body_argument
        arg2 = self.get_argument('day')
        print('get_argument獲取的arg: ',arg2)
        arg2s = self.get_arguments('day')
        print('get_arguments獲取的args: ', arg2s)

		
獲取請求頭中的資訊
self.request.headers
'''



import tornado
from tornado.httpserver import HTTPServer
from tornado.ioloop import IOLoop
from tornado.options import define, options, parse_config_file
from tornado.web import Application, RequestHandler

# 用來響應使用者請求
class IndexHandler(RequestHandler):
    #響應以get方式發起的請求
    def get(self, *args, **kwargs):
        #CTRL + / 註釋程式碼
        # 第一種處理不傳引數的方式
        # try:
        #     arg = self.get_query_argument('day')
        # except Exception as e:
        #     arg = None

        #第二種處理不傳引數的方式
		#同一個引數可以賦予不同的值,一次統一提交到伺服器
        arg = self.get_query_argument('day',None)  #只取一個引數,最新的,最近的

        print('arg---->',arg)
        args = self.get_query_arguments('day')			#獲取所有的引數
        print('args---->',args)

        # 伺服器給瀏覽器的響應內容
        self.write('hello aid1710')
    #響應以post方式發起的請求
    def post(self, *args, **kwargs):

        arg = self.get_body_argument('day',None)
        print('post方式獲取的arg: ',arg)
        args = self.get_body_arguments('day')
        print('post方式獲取的args: ', args)


        #get_argument = get_query_argument+get_body_argument
        arg2 = self.get_argument('day')
        print('get_argument獲取的arg: ',arg2)
        arg2s = self.get_arguments('day')
        print('get_arguments獲取的args: ', arg2s)

        #利用RequestHandler中的一個屬性request
        #獲取請求頭中感興趣的內容
        #Content-Type, myheader, yourheader
        head = self.request.headers
        print('head的型別:',type(head))
        ct = head.get('Content-Type',None)
        mh = head.get('myheader',None)
        yh = head.get('yourheader',None)

        print('Content-Type--->',ct)
        print('myheader--->',mh)
        print('yourheader--->',yh)





        self.write('hello post')

#定義一個變數,用來代表埠號#fkadsfjklsadjklf
define('port',type=int,default=8888,multiple=False)
#定義一個變數,用來代表資料庫的連線資訊(使用者名稱,密碼,埠號,資料庫名稱)
define('db',multiple=True,type=str,default=[])
#從指定的配置檔案中,讀取port的內容
parse_config_file('config')

#建立Application物件,進行若干個對伺服器的設定
#例如:路由列表,模板路徑,靜態資源路徑等
app = Application([('/',IndexHandler)])
#建立伺服器程式
server = HTTPServer(app)
#伺服器監聽某個埠(建議使用10000以上的埠)
server.listen(options.port)#10000
#列印獲得的資料庫引數
print('資料庫引數:',options.db)
#啟動伺服器(在當前程序中啟動伺服器)
IOLoop.current().start()