2017-02-28 96 views
0

我正在編寫一個同時支持REST API和靜態文件的golang杜松子酒應用。理想情況下,我應該分開後端和前端邏輯,但對於這種情況,我必須將它們放在一起。例如,API的頂級路徑是通配符,如http://myapp.com/ {用戶名}/{主題},並且此同一端點也可以提供一些保留的靜態資源,如http://myapp.com/js/app.jshttp://myapp.com/css/style.cssGolang杜松子酒:在同一個應用中提供JSON和靜態文件

我知道這不是最佳做法,我應該分開前端代碼,但在我的情況下還存在其他一些非技術性問題。杜松子有辦法從一個文件夾中提供靜態文件,但我想提供指向一些已知資源(JS,CSS,字體等)的特定「保留」路徑。我怎麼能用GIN來做到這一點?

我可以使用杜松子酒模板爲index.html服務,但無法弄清楚如何使用其餘的資源。

+0

你看到了嗎? https://github.com/gin-gonic/gin/issues/75 – Jack

回答

0

將文件放置在各自的文件夾中(例如.css css文件夾中的文件,.js js文件夾中的文件等)並將所有這些文件夾放置在assets文件夾中。並使用

router := gin.Default() 
router.Static("/assets", "./assets") 

你的終點將是http://myapp.com/assets/js/app.js,或http://myapp.com/assets/css/style.css check documentation

+0

這不起作用,因爲我已經有了一個路徑定義爲router.GET(「/:path1」,getPath1)和router.GET(「 /:path1 /:path2「,getPath2),並且當我添加router.Static(」/ assets「,」。/ path1「)時,gin將會出現錯誤」wildcard route「:path1'與路徑'/:path1'中的現有子項衝突。/assets「)。也就是說,因爲我已經將路徑段定義爲通配符,所以我不能使用router.Static而沒有衝突,這是GIN設計的一個古怪的決定。我希望我能找到一種方法來服務每一個來自通配符處理程序的單個靜態文件。 – YCSeattle

相關問題