Question

I am setting up a web application building a route and handler with Ring and Compojure. Every time I try lein ring server I get a 404 Not Found. But I should see

enter image description here

Edit After starting the server I am asked by IE to open or save the file. But Windows is not able to read the JSON file.

My project.clj looks like

(defproject web-viz 
 :dependencies [[org.clojure/clojure "1.4.0"]
                [ring/ring-core "1.1.7"]
                [ring/ring-jetty-adapter "1.1.7"]
                [compojure "1.1.3"]
                [hiccup "1.0.2"]]
:plugins [[lein-ring "0.8.3"]]
:ring {:handler web-viz.web/app})

and inside the src I have a file web.clj

(ns web-viz.web
(: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)]))

(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)))
Was it helpful?

Solution 3

I don't see anything obviously wrong but the following looks unusual:

(def app (-> (handler/site site-routes)
         (wrap-file "resources")
         (wrap-file-info)
         (wrap-content-type)))

From https://stackoverflow.com/a/22788463/894091:

You don't need any of the extra middleware like wrap-file, wrap-file-info, or wrap-content-type, since compojure.route/resources already does everything you need.

See if the following does the trick:

(def app
  (handler/site app-routes))

OTHER TIPS

There should be a file with the content above located at

web-viz/resources/public/data/census-race.json

You project is working for me. Here is how I structured the project

.
├── project.clj
├── resources
│   └── data
│       └── census-race.json
└── src
    └── web_viz
        └── web.clj
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top