Я настраиваю и настраиваю веб-приложение для обслуживания данных JSON http://www.ericrochester.com/clj-data-analysis/data/census-race.json файл статически.
Мои зависимости:
:dependencies [[org.clojure/clojure "1.5.1"]
[org.clojure/clojurescript "0.0-2197"]
[ring/ring-core "1.1.7"]
[ring/ring-jetty-adapter "1.1.7"]
[compojure "1.1.3"]
[hiccup "1.0.2"]
[lein-cljsbuild "0.2.10"]]
Как следует из названия, я использую Ring в качестве плагина для разработки, т.е.
:plugins [[lein-ring "0.8.3"]]
Лейнингенский проект
(ns test-app.core
(:require [compojure.route :as route]
[compojure.handler :as handler]
[clojure.string :as str])
(:use compojure.core
ring.adapter.jetty
[ring.middleware.content-type :only
(wrap-content-type)]
[ring.middleware.file :only (wrap-file)]
[ring.middleware.file-info :only
(wrap-file-info)]
[ring.middleware.stacktrace :only
(wrap-stacktrace)]
[ring.util.response :only (redirect)]))
и в проекте.clj
:ring {:handler test-app.core/app}
что я не уверен, скажет ли это Ring, где находится веб-приложение.
Более того, я не уверен, как статически обслуживать файл данных JSON. Я читал, что «Ring обслуживает статические файлы из каталога /resources вашего проекта. В этом случае создайте каталог /resources/data и поместите файл данных, который вы скачали с http://www.ericrochester.com/clj-data-analysis/data/census-race.json в него».
В основном это последняя часть о создании каталога /resources/data, где я потерялся в реализации. Может ли кто-нибудь показать, как делается эта часть?
Если я смогу научиться преодолевать это, я собираюсь создавать маршруты и обработчики, т.е.
(defroutes site-routes
(GET "/" [] (redirect "/data/census-race.json"))
(route/resources "/")
(route/not-found "Page not found"))
и
(def app
(-> (handler/site site-routes)
(wrap-file "resources")
(wrap-file-info)
(wrap-content-type)))