扣丁學堂區塊鏈技術之golang搭建靜態web伺服器實現方法

來源:互聯網
上載者:User

  今天扣丁學堂區塊鏈培訓課程主要給大家介紹一下關於golang搭建靜態web伺服器的實現方法,首先使用過golang語言的程式猿都應該知道,在使用golang開發的時候,我們是不需要諸如iis,apache,nginx,kangle等伺服器支援的。

  為什麼呢?原因是,golang的net/http包中已經提供了HTTP的用戶端與服務端實現方案。網上言論都說golang不適合做web開發,相對php、java、.net、nodejs等各類後端語言來說,使用golang來做web開發,確實是一個大工程。下面我們來看一下關於使用golang搭建web伺服器的詳細介紹吧。

  funcmain(){

  http.Handle("/css/",http.FileServer(http.Dir("template")))

  http.Handle("/js/",http.FileServer(http.Dir("template")))

  http.ListenAndServe(":8080",nil)

  }

  目錄結構:

  src

  |--main

  ||-main.go

  |--template

  ||-css

  ||--admin.css

  ||-js

  ||--admin.js

  ||-html

  ||--404.html

  以上運行結果是:找不到template這個路徑。

  其實我很納悶,文章作者都可以成功運行起來這個demo,怎麼到我這裡,就啟動不來了呢?

  那麼問題來了:

  1.是什麼原因導致程式起不來呢?

  2.http.Dir()指向的是什麼路徑?

  於是我追蹤日誌,如下

  2018/01/0711:09:28opentemplate/html/404.html:Thesystemcannotfindthepathspecified.

  發現問題是出在找不到路徑上。解決了第一個問題後,那麼接下來就需要搞明白http.Dir()到底指向的是哪個路徑。

  我查看了官方例子:

  log.Fatal(http.ListenAndServe(":8080",http.FileServer(http.Dir("/usr/share/doc"))))

  從上面例子http.Dir("/usr/share/doc")可看出,該路徑指向的是linux系統裡的絕對路徑。那麼問題就解決了:我只需要將http.Dir()的路徑改為運行時的相對路徑,或者使用絕對路徑就可以了。

  另一個例子,使用http.StripPrefix()方法:

  //Toserveadirectoryondisk(/tmp)underanalternateURL

  //path(/tmpfiles/),useStripPrefixtomodifytherequest

  //URL'spathbeforetheFileServerseesit:

  http.Handle("/tmpfiles/",http.StripPrefix("/tmpfiles/",http.FileServer(http.Dir("/tmp"))))

  可看出,tmpfiles是tmp目錄下的一個子目錄。

  既然問題都解決了,那麼就修改一下代碼,重新運行

  funcTemplate_dir()string{

  template_dir:="E:\\project\\gotest\\src\\template"

  returntemplate_dir

  }

  funcmain(){

  http.Handle("/css/",http.FileServer(http.Dir(Template_dir())))

  http.Handle("/js/",http.FileServer(http.Dir(Template_dir())))

  http.ListenAndServe(":8080",nil)

  }

  編譯運行後,在瀏覽器中輸入localhost:8080/css/,可成功看到template/css/目錄下的admin.css檔案。

  以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援扣丁學堂。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.