go語言內建net/http庫,封裝http程式設計的基礎介面,啟動http特別簡單
建立乙個main檔案
執行**在開啟瀏覽器,檢視
我們只設定了乙個路由 「/」 ,繫結了indexhandler,匹配路由呼叫函式。
http.listenandserve()函式有兩個引數,第乙個為監聽位址,第二個為handler,如果為nil那麼呼叫預設handler,我們也可以自定義handler,啟動web服務。
go語言net/http庫中
handler為乙個介面型別,那麼新建乙個結構體,實現servehttp()方法就建立了乙個handler,試一下吧!
)//新建乙個結構體
type engine struct {}
//實現servehttp方法
//啟動服務
}瀏覽器驗證:
我們定義了乙個空的結構體engine,實現了servehttp方法,這個方法有2個引數,第二個引數是 request ,該物件包含了該http請求的所有的資訊,比如請求位址、header和body等資訊;第乙個引數是 responsewriter ,利用 responsewriter 可以構造針對該請求的響應。
在 main 函式中,我們給 listenandserve 方法的第二個引數傳入了剛才建立的engine例項。至此,我們走出了實現web框架的第一步,即,將所有的http請求轉向了我們自己的處理邏輯,**的執行結果與之前的是一致的。
目錄說明
}埠位址定義為「8080」
)//定義函式為handlerfunc型別
//定義engine結構體
type engine struct
//實現servehttp方法 根據請求的方法及路徑來匹配handler
}//外部呼叫框架入口
func new() *engine
}//框架新增路由
func (engine *engine) addroute(method string, pattern string, handler handlerfunc)
//匹配get方法
func (engine *engine) get(pattern string, handler handlerfunc)
//匹配post方法
func (engine *engine) post(pattern string, handler handlerfunc)
//啟動服務
func (engine *engine) run(addr string) (err error)
我們重點介紹一下這部分的實現。
首先定義了型別handlerfunc,這是提供給框架使用者的,用來定義路由對映的處理方法。我們在engine中,新增了一張路由對映表router,key 由請求方法和靜態路由位址構成,例如get-/、get-/hello、post-/hello,這樣針對相同的路由,如果請求方法不同,可以對映不同的處理方法(handler),value 是使用者對映的處理方法。
當使用者呼叫(*engine).get()方法時,會將路由和處理方法註冊到對映表 router 中,(*engine).run()方法,是 listenandserve 的包裝。
engine實現的 servehttp 方法的作用就是,解析請求的路徑,查詢路由對映表,如果查到,就執行註冊的處理方法。如果查不到,就返回 404 not found 。
執行go run main.go,
啟動瀏覽器驗證:
至此,框架原型出來了,慢慢完善!
android基礎 第一天
一 android體系結構 密碼 d7g8 二 兩種虛擬機器的比較 密碼 8gyf 三 sdk介紹 密碼 xqam 四 eclipse環境搭建 密碼 yt4z 五 模擬器的介紹 密碼 j7wg 六 第乙個android專案 上 密碼 jnz1 七 第乙個android專案 下 密碼 i6td 八 a...
Vue基礎第一天
foreach function value,index 4 1.filter 過濾器 filter function item,index let arr 1,2,3,4,5,arr.filter function item,index 4 2.map 對映 對於陣列的對映map function...
js基礎第一天
js的介紹 js是什麼 js是一門指令碼語言 解釋性語言 動態型別語言 基於物件語言 編譯語言 需要把 翻譯成計算機所認知的二進位制語言,才能夠執行 指令碼語言 不需要編譯,直接執行 常見的指令碼語言 t sql,cmd js的作用 解決使用者和瀏覽器之間的互動問題 的寫法 宣告乙個物件 var o...