2017-02-28 13 views
0

REST APIと静的ファイルの両方を提供するgolang ginアプリケーションを作成しています。理想的には、私はバックエンドとフロントエンドのロジックを分離する必要がありますが、この場合はそれらをまとめなければなりません。たとえば、APIの最上位パスはhttp://myapp.com/ {username}/{topic}のようなワイルドカードであり、この同じエンドポイントはhttp://myapp.com/js/app.jsまたはhttp://myapp.com/css/style.cssのような予約された静的リソースも提供できます。Golang gin:同じアプリケーションでJSONと静的ファイルを処理する

私はこれがベストプラクティスではないことを理解しています。フロントエンドコードを分離する必要がありますが、私の場合は他にもいくつかの技術的な問題があります。 Ginにはフォルダから静的ファイルを提供する方法がありますが、いくつかの既知のリソース(JS、CSS、フォントなど)を指し示す特定の "予約済み"パスを提供したいと思います。どのように私はGINでそれを行うことができますか?

私はGinテンプレートを使用してindex.htmlを提供することができますが、残りのリソースでGinテンプレートを使用する方法はわかりませんでした。

+0

を見ましたでしょうか? https://github.com/gin-gonic/gin/issues/75 – Jack

答えて

0

ファイルをそれぞれのフォルダに配置します(例:.css、csフォルダのファイル.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 "内の既存の子とpath"が衝突します。/assets ")。つまり、既にパスセグメントがワイルドカードとして定義されているため、ルータを使用することはできません.GINが設計した奇妙な決定である矛盾なしに静的になります。ワイルドカードハンドラからの個々の静的ファイル – YCSeattle

関連する問題