<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                路由基礎net/http的學習 === 有tp或者其他web基礎的同學都知道路由這東西吧, 你看現在路由器的地址欄上的http://.....這些就路由 每一個路由對應不同的頁面 好的我們現在就來寫吧 ***** 1.基礎準備,配置golang 環境這些我就不必多說了吧 2.我們本次開發用到的IDE為golang這個安裝和新建一個項目,我也不必多說了吧 3.新建一個main.go ``` package main import ( "fmt" "net/http" ) func main() { /* 這個是創建一個路由 路由地址 /hello 接收兩個參數 第一個為response 第二個是request (注:request 為什么是指針? 這個golang默認是值傳遞,如果你寫 request http.Request 這樣接收的參數是傳遞的副本拷貝的 這個是golang基礎不懂的話去看官方文檔啊~!) writer.Write() response返回 要求是[]byte so你要轉一下 好的 現在編譯一下吧 運行下吧 go build . 然和通過瀏覽器 訪問 http://127.0.0.1:8085/hello */ // url: http://127.0.0.1:8085/hello http.HandleFunc("/hello", func(writer http.ResponseWriter, request *http.Request) { writer.Write([]byte("Hello GOlang")) }) fmt.Println("server is runing ...") err := http.ListenAndServe(":8085", nil) //第一個是地址(ip:端口 ip可以省略 監聽本機全部端口) 第二個是handler if err != nil { fmt.Println("server error:",err.Error()) } } ``` ![](https://box.kancloud.cn/66165a7bddd7207664c5cdf0be880f76_1920x1052.png) 哈哈golang寫網頁是不是非常簡單的 如果對上面幾個方法有不懂的地方 去官網看看golang net/http的庫 ### httprouter講解 好了大家現在發現沒有 第一章我讓大家去了解下RESTful api 剛剛上面的例子 get post .. 都可以請求到 現在我就給大家講一個httproter 庫 為net/http的升級版 大家應該聽過大名鼎鼎的git框架吧 他的路由實現就是靠 httproter實現的 1.第一步獲得httproter ``` go get github.com/julienschmidt/httprouter ``` (還是推薦使用vgo做管理,有想法的同學可以去看看蛤) 現在我們已經獲取了,現在就來改造一下我們的demo吧 等等剛剛還忘了說一個問題,如果所有的路由都在main方法里面寫,最后來main是不是非常的大啊! 好的,現在我們就來用httproter順便解決這個問題吧 ``` package main import ( "fmt" "github.com/julienschmidt/httprouter" "net/http" ) /** 創建路由注冊 */ func RegisterRouter() *httprouter.Router { router := httprouter.New() //得到router實例 //注冊路由 // 路由后面可以跟.GET .POST .DELETE .PUT 等 (其他的怎么查看呢? 你按住ctrl 點贊 New()進入方法 看下面的代碼 里面就是詳情啊!) // 第一個你發覺參數有些不同的嗎? 對 多了一個params httprouter.Params 這個用來接收路由中的參數 等會來講 // 我們先看GET POST都指向同一個路徑 but返回不同的內容, 怎么測試呢? 百度postman 這個是測試基礎啊!百度學習吧騷年 非常簡單的 router.GET("/", func(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { writer.Write([]byte("this is get method")) }) router.POST("/", func(writer http.ResponseWriter, request *http.Request, params httprouter.Params) { writer.Write([]byte("this is post method")) }) return router } func main() { router := RegisterRouter() //注冊路由 fmt.Println("server is runing ...") //這里發現改變了什么嗎? //對第二次參數變成了router err := http.ListenAndServe(":8085", router) //第一個是地址(ip:端口 ip可以省略 監聽本機全部端口) 第二個是handler if err != nil { fmt.Println("server error:",err.Error()) } } ``` 好了我們再來看params httprouter.Params是什么東西,順便解決吧路由分開 1.創建router文件夾 2.在里面方兩個文件一個是router.go 一個handlers.go ├── main.go ├── router 路由層 │?? ├── handlers.go │?? └── router.go 這樣就完成了分離 是不是好看了許多啊! ![](https://box.kancloud.cn/8f9dacab0eeaa8a5aba53a117812c8ba_1912x923.png) 是不是很簡單啊 我現在就吧當前的代碼提交了吧,我去的github上看看吧,記住自己要練習啊! [https://github.com/dollarkillerx/GolangWebCourseware/tree/%E8%B7%AF%E7%94%B1%E5%9F%BA%E7%A1%80](https://github.com/dollarkillerx/GolangWebCourseware/tree/%E8%B7%AF%E7%94%B1%E5%9F%BA%E7%A1%80)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看