首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Ring和Compojure服务数据

用Ring和Compojure服务数据
EN

Stack Overflow用户
提问于 2014-03-31 23:55:16
回答 2查看 844关注 0票数 1

我正在配置和设置一个web应用程序,以便静态地为JSON数据http://www.ericrochester.com/clj-data-analysis/data/census-race.json文件服务。

我的依赖关系:

代码语言:javascript
复制
  :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作为一个开发插件。

代码语言:javascript
复制
  :plugins [[lein-ring "0.8.3"]]

莱宁根项目是

代码语言:javascript
复制
   (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)]))

在project.clj中

代码语言:javascript
复制
  :ring {:handler test-app.core/app}

我不确定这是否会告诉环形网络应用程序在哪里。

此外,我不知道如何静态地提供JSON数据文件。我读过"Ring在项目的/resources目录之外提供静态文件,在本例中,创建目录/resources/data并将您从http://www.ericrochester.com/clj-data-analysis/data/census-race.json下载的数据文件放入其中。“

这主要是关于创建/resources/data目录的最后一部分,在实现中我迷失了方向。有人能告诉我这部分是怎么完成的吗?

如果我能学会克服这个问题,我想要建立路线和处理程序。

代码语言:javascript
复制
  (defroutes site-routes
     (GET "/" [] (redirect "/data/census-race.json"))
     (route/resources "/")
     (route/not-found "Page not found"))

代码语言:javascript
复制
 (def app
    (-> (handler/site site-routes)
    (wrap-file "resources")
    (wrap-file-info)
    (wrap-content-type)))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-01 10:48:46

在project.clj中 环{:处理程序测试-app.core/app} 我不确定这是否会告诉环形网络应用程序在哪里。

当您运行$ lein ring server-headless时,它将在test-app.core命名空间中查找app。您的core.clj文件中应该有如下内容:

代码语言:javascript
复制
(def app
  (handler/site app-routes))

这主要是关于创建/resources/data目录的最后一部分,我在实现中迷失了方向。有人能告诉我这部分是怎么完成的吗?

在项目目录的根目录中,应该有一个resources文件夹。在data文件夹中创建一个resources文件夹。

我不知道你有什么问题?

票数 1
EN

Stack Overflow用户

发布于 2014-04-01 14:11:03

如果您的项目如下所示:

代码语言:javascript
复制
project.clj
src/test_app/core.clj
resources/public/data/census-race.json

然后,当您请求路径site-routes时,您的/data/census-race.json处理程序将提供该JSON文件。

您不需要任何额外的中间件,如wrap-filewrap-file-infowrap-content-type,因为compojure.route/resources已经完成了您需要的一切。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22774386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档