2017-02-28 2 views
0

REST API와 정적 파일을 모두 제공하는 golang 진 앱을 작성 중입니다. 이상적으로는 백엔드와 프론트 엔드 로직을 분리해야하지만,이 경우에는 함께 사용해야합니다. 예를 들어 API의 최상위 경로는 http://myapp.com/ {사용자 이름}/{주제}와 같이 와일드 카드이며이 끝점은 http://myapp.com/js/app.js 또는 http://myapp.com/css/style.css과 같은 예약 된 정적 리소스를 제공 할 수도 있습니다.Golang : 동일한 앱에서 JSON 및 정적 파일 제공

이것이 최선의 방법은 아니며 프런트 엔드 코드를 분리해야한다고 생각합니다. 그러나 제 경우에는 기술적이지 않은 몇 가지 문제가 있습니다. Gin은 폴더에서 정적 파일을 제공하는 방법이 있지만 몇 가지 알려진 리소스 (JS, CSS, 글꼴 등)를 가리키는 특정 "예약 된"경로를 제공하고 싶습니다. GIN으로 어떻게 할 수 있습니까?

나는 Gin 템플릿을 사용하여 index.html을 제공 할 수 있지만 나머지 리소스와 함께 사용하는 방법을 알 수는 없습니다.

+0

http://myapp.com/assets/css/style.css 될 것

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

최종 점

를 사용할 수 있습니까? https://github.com/gin-gonic/gin/issues/75 – Jack

답변

0

각 폴더에 파일을 넣고 (예 : .css 개의 파일 (CSS 폴더), .js 개의 파일 (js 폴더) 등) 파일을 모두 assets 폴더에 넣습니다. 그리고 http://myapp.com/assets/js/app.js, 또는 당신이 봤어 check documentation

+0

이미 경로가 router.GET ("/ : path1", getPath1) 및 router.GET ("/: path1/: path2 ", getPath2), gin은 router.Static ("/ assets ",".) 경로를 추가 할 때 경로 "/ path1"의 기존 하위 항목과 경로 "와일드 카드 경로 '가 충돌합니다./assets "). 즉, 이미 경로 세그먼트가 와일드 카드로 정의되어 있기 때문에 나는 라우터를 사용할 수 없습니다. 충돌없이 정적, GIN이 설계 한 기발한 결정입니다. 나는 각각의 서비스를 제공하는 방법을 찾을 수 있기를 희망합니다. 와일드 카드 핸들러의 개별 정적 파일 – YCSeattle