成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Go開發(fā)文件服務(wù)fs.go深入探討之架構(gòu)

開發(fā) 架構(gòu)
通過兩行代碼可以看到,代碼比較簡(jiǎn)易,請(qǐng)求到達(dá)然后發(fā)送文件,要什么就發(fā)什么。這同時(shí)也是它的缺點(diǎn),因?yàn)椴荒軐?duì)文件進(jìn)行更細(xì)粒度的處理,這個(gè)在后文中會(huì)詳述。

架構(gòu)

首先看下FileServer的組成:

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

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

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

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

兩句代碼的分析

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

分析

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

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

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

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

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

優(yōu)點(diǎn)和缺點(diǎn)

通過兩行代碼可以看到,代碼比較簡(jiǎn)易,請(qǐng)求到達(dá)然后發(fā)送文件,要什么就發(fā)什么。這同時(shí)也是它的缺點(diǎn),因?yàn)椴荒軐?duì)文件進(jìn)行更細(xì)粒度的處理,這個(gè)在后文中會(huì)詳述。

總結(jié)

文件服務(wù)是一個(gè)普通的Handler,請(qǐng)求到達(dá),服務(wù)器打開文件,然后將文件內(nèi)容倒進(jìn)響應(yīng)Body返回。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2021-09-03 12:33:36

語言并發(fā)下載器

2009-12-23 16:13:00

WPF Attache

2010-04-15 14:02:32

Oracle網(wǎng)絡(luò)服務(wù)

2009-11-20 17:17:08

Oracle函數(shù)索引

2021-05-17 05:36:02

CSS 文字動(dòng)畫技巧

2010-11-22 14:18:32

MySQL鎖機(jī)制

2010-07-21 09:38:15

PHP緩存技術(shù)

2009-11-12 13:56:54

2009-12-07 16:07:03

PHP類的繼承

2009-12-14 14:40:10

Ruby全局域變量

2012-02-28 14:43:43

2024-01-26 06:42:05

Redis數(shù)據(jù)結(jié)構(gòu)

2017-01-03 17:57:46

Android異步精髓Handler

2009-10-16 09:17:39

屏蔽布線系統(tǒng)

2009-12-07 13:55:58

PHP array_m

2013-07-11 09:45:48

扁平化扁平化設(shè)計(jì)

2009-12-11 11:08:31

靜態(tài)路由策略

2010-03-05 13:44:00

Python序列

2009-08-27 11:27:58

foreach語句C# foreach語

2023-01-12 17:18:06

數(shù)據(jù)庫多云
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 欧美不卡一区 | 久久久久久久久久久久久久av | 99re视频这里只有精品 | av黄色在线观看 | 精品一二区 | 美国十次成人欧美色导视频 | 自拍偷拍精品 | 天堂久久av| 久久精品免费观看 | 在线观看的av | 丝袜一区二区三区 | 亚洲国产成人精品女人 | 精品视频一区二区三区四区 | 伊人精品在线 | 欧美日韩一区二区三区视频 | 成人性视频免费网站 | 在线播放国产一区二区三区 | 欧美精品一区在线发布 | 亚洲精品大全 | 一级片av | 国产精久久久久久久 | 91免费在线播放 | 国产羞羞视频在线观看 | 99热国产在线播放 | 久久久亚洲综合 | 国产精品福利一区二区三区 | 天天舔天天 | 精品亚洲一区二区三区四区五区 | 天天拍天天插 | 国产ts人妖一区二区三区 | 国产一级一级毛片 | 亚洲成人av一区二区 | 波多野结衣一区二区三区 | 国产影音先锋 | 日韩一区二区三区在线观看 | 精品久久九 | 中文字幕在线视频观看 | 激情av在线| 欧美1区2区| 亚洲一区二区三区四区视频 | 久久久久国产一区二区三区 |