相比於 Django 和 Flask,web.py 是輕量到不能再輕量的 web 框架,全部的功能都須要本身實現,全部不適合中大型 web 的開發,不過對於簡單的 api 服務或 web 展現,卻是很友好。web
安裝api
pip install web.py==0.40-dev1 # 必定要加==後面的dev,版本號通常選最新的
快速開始跨域
import web # url urls = ( '/(.*)', 'hello' ) # 生成一個app app = web.application(urls, globals()) # url映射的視圖函數接受 class hello: # GET方法 def GET(self, name): if not name: name = 'World' return 'Hello, ' + name + '!' # POST方法 def POST(self, name): if not name: name = 'World' return 'Hello, ' + name + '!!!' if __name__ == "__main__": app.run()
此時運行這個文件,瀏覽器訪問localhost:8080就能夠獲得hello world的頁面(端口默認爲8080) 瀏覽器
URL映射有3種類型:服務器
'/index','Index' # 由Index類處理 http://127.0.0.1:8080/index
'/post/\d+','Post' # 由Post類處理 如http://127.0.0.1:8080/post/3,post/後面帶一個數字的URL
'/post2/(\d+)','Post2' # Post2類處理 如http://127.0.0.1:8080/post2/3,post2/後面帶一個數字的URL,Post2類會接受處理url post2後面的參數。而模糊匹配的方式是不處理參數的
web.webapi.internalerror = web.debugerror
並在最後的「if name …」 添加」web.reloader「:app
if __name__ == "__main__": web.run(urls, globals(), web.reloader)
調試的階段能獲得更多有用的信息。web.reloader 實際上是一箇中間件,在運行時若是修改了py文件,web.reloader 會從新加載文件,在瀏覽器上馬上能夠看到變化。不過變化較大時最好仍是須要從新啓動服務器。web.py 也提供web.profiler ,能夠輸出有用的信息,有關每一個頁面的每一個函數調用的次數,有助於改善代碼。框架
web.py默認是不支持跨域請求的,解決方法是加一個鉤子函數
# 實現一個函數 def customhook(): web.header('Access-Control-Allow-Origin', '*') web.header('Access-Control-Allow-Headers', 'Content-Type, Access-Control-Allow-Origin, Access-Control-Allow-Headers, X-Requested-By, Access-Control-Allow-Methods') # 本身生命的請求頭中加的東西都放到這個字符串裏來 web.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE') app.add_processor(web.loadhook(customhook))
同時在視圖函數中實現一個 OPTIONS 方法工具
def OPTIONS(self): pass