Голанг джин: обслуживание JSON и статических файлов в одном приложении

Я пишу приложение golang gin, которое обслуживает как REST API, так и статические файлы. В идеале я должен разделить внутреннюю и внешнюю логику, но в этом случае мне нужно соединить их вместе. Например, путь верхнего уровня API - это подстановочный знак, например http://myapp.com/. {username} / {topic}, и эта же конечная точка также может обслуживать несколько зарезервированных статических ресурсов, например http://myapp.com/js/app.js или http://myapp.com/css/style.css.

Я понимаю, что это не лучшая практика, и я должен отделить интерфейсный код, но в моем случае есть некоторые другие нетехнические проблемы. У Gin есть способ обслуживать статические файлы из папки, но я хотел бы указать определенный «зарезервированный» путь, указывающий на несколько известных ресурсов (JS, CSS, шрифты и т. Д.). Как я могу это сделать с GIN?

Я могу использовать шаблон Gin для обслуживания index.html, но не могу понять, как это сделать с остальными ресурсами.


person YCSeattle    schedule 28.02.2017    source источник
comment
Ты видел это? github.com/gin-gonic/gin/issues/75   -  person Jack    schedule 28.02.2017


Ответы (2)


Поместите файлы в соответствующую папку (например, .css файлы в папку css, .js файлы в папку js и т. Д.) И поместите все эти папки в папку с ресурсами. И использовать

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

Ваши конечные точки будут http://myapp.com/assets/js/app.js или http://myapp.com/assets/css/style.css проверить документацию

person Bhavana    schedule 28.02.2017
comment
Это не работает, потому что у меня уже есть путь, определенный как router.GET (/: path1, getPath1) и router.GET (/: path1 /: path2, getPath2), и gin запаникует с ошибкой подстановочного знака route ': path1 'конфликтует с существующими дочерними элементами в пути' /: path1 ', когда я добавляю router.Static (/ assets, ./assets). То есть, поскольку у меня уже есть сегмент пути, определенный как подстановочные знаки, я не могу использовать маршрутизатор. Статический режим без конфликтов - странное решение, для которого разработано GIN. Я надеюсь, что смогу найти способ обслуживать каждый из отдельных статических файлов из обработчика подстановочных знаков. - person YCSeattle; 05.03.2017

go get https://github.com/gin-contrib/static

Затем импортируйте его:

import (

 "github.com/gin-contrib/static"
  
 )

Использовать этот:

router.Use(static.Serve("/assets", static.LocalFile("./templates", false)))

Создайте папку css и js внутри шаблонов и поместите туда файлы .css и .js.

  <link rel="stylesheet" href="/assets/css/{FileName}.css">

Чтобы загрузить файл .css

ПРИМЕЧАНИЕ. Он не будет работать без активов / before.

person Ante Zovko    schedule 19.08.2020