4

leiningen で clojure を使用して小さな Web アプリを構築しています。アクセスする必要がある特定のjsonファイルがあり、サーバーで実行されているバッチプロセスを使用して毎晩更新しています。leiningen をローカルで使用していますが、uberjar をサーバーにデプロイしたいと考えています。jar ファイル内で圧縮された json ファイルを更新するか、uberjar の外部にある json ファイルにアクセスする方法があります。現在、私はリングを使用して後者を実行しようとしています:

      (GET "/json/:filename" [filename] 
        (resp/resource-response 
          (str filename ".json") 
          {:root "~/internal_dashboard/app/json/"}))

アプリがファイルにアクセスしようとすると、404 エラーが発生します。可能な解決策を知っている人はいますか?

4

3 に答える 3

0

resp/resource-response、jar と一緒にパッケージ化されたリソースを提供することを目的としているため、アプリケーションとは別に更新する必要があるファイルを提供するのにはあまり適していません。

resp/file-responseあなたの場合、Ring'sの方が適していると思います。これにより、ファイル システム内の指定された場所からファイルを提供できるようになり、json ファイルをアプリから分離しておくことができます。

このようなもの:

(GET "/json/:filename" [filename] (resp/file-response
                                    (str filename ".json")
                                    {:root "/some/folder/"}))

ショーンが提案したように、正確なフォルダー名はおそらく構成またはシステム環境に由来するはずです。

于 2013-12-30T17:25:30.733 に答える