日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Go開發(fā)文件服務(wù)fs.go深入探討之架構(gòu)

架構(gòu)

首先看下FileServer的組成:

創(chuàng)新互聯(lián)專注于陽高企業(yè)網(wǎng)站建設(shè),響應式網(wǎng)站開發(fā),商城系統(tǒng)網(wǎng)站開發(fā)。陽高網(wǎng)站建設(shè)公司,為陽高等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站設(shè)計,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

接口稱為FileSystem,有一個Open方法。但實現(xiàn)它的卻是名為Dir的類型(其實是一個string),為什么起名為Dir呢?

作者想了下,認為Dir是目錄的意思,而文件系統(tǒng)(FileSystem)就好比是一個目錄包裹一系列文件,于是這個目錄本身就是FileSystem,如下圖所示

如果這樣理解,那么FileSystem的Open方法,就是以該Dir名為目錄,再加上具體的文件路徑構(gòu)成一個完整的路徑,而源碼中確實也是這樣做的。

FileServer內(nèi)部實例化一個fileHandler,因此一個Server其實是一個fileHandler。

兩句代碼的分析

fs := http.FileServer(http.Dir("./assets/"))
http.Handle("/static/", http.StripPrefix("/static", fs))

分析

這兩句代碼是常見的靜態(tài)文件處理方式,http.Dir指定了文件系統(tǒng)(也就是一個目錄)為./assets/。它是一個相對路徑,相對于當前目錄,下面解釋下什么是當前目錄。

如果是在IDE中開發(fā),比如在Goland中,當前目錄就是項目所在的目錄;而如果是直接運行可執(zhí)行程序,那么當前目錄就是可執(zhí)行程序所在目錄。兩者一般是不一樣的,需要注意。

http.FileServer返回的是一個Handler,因此可以直接用在http.Handle中。

完整解釋:創(chuàng)建一個Handler名為fs,當路由以"/static/"開頭時,轉(zhuǎn)交給該處理器處理,而http.StripPrefix首先將前綴剔除掉。比如,請求的路由是/static/cat.jpg,剔除之后得到/cat.jpg。將該路徑和目錄名組合得到./assets/cat.jpg,就是完整的相對路徑。

得到路徑之后下一步怎么處理呢?按照正常邏輯,就是打開文件,因此,一個文件服務(wù)處理就是將文件打開并倒進響應Body的過程。

優(yōu)點和缺點

通過兩行代碼可以看到,代碼比較簡易,請求到達然后發(fā)送文件,要什么就發(fā)什么。這同時也是它的缺點,因為不能對文件進行更細粒度的處理,這個在后文中會詳述。

總結(jié)

文件服務(wù)是一個普通的Handler,請求到達,服務(wù)器打開文件,然后將文件內(nèi)容倒進響應Body返回。


分享標題:Go開發(fā)文件服務(wù)fs.go深入探討之架構(gòu)
URL網(wǎng)址:http://m.5511xx.com/article/dposiei.html