Clojure:使用Rook和Ring提供REST接口并提供静态HTML / JS

时间:2014-12-07 13:33:54

标签: rest clojure ring

我编写了一些Clojurescript代码,需要一个REST接口来与服务器进行通信。后端目前在Python中,我想把它移到Clojure。现在我找到了rook https://github.com/AvisoNovate/rook,它提供了一个很好的REST API,我将使用它。

但是我想使用ring(由rook使用)在同一个http服务器上提供一些静态内容(基本上是Hlo和JS of ClojureScript)。

我的设置与现在的Rook示例非常相似:

https://portal.aviso.io/#/document/open-source/rook/Current/example.html

(ns org.example.server
  (:import
    [org.eclipse.jetty.server Server])
  (:require
    [ring.adapter.jetty :as jetty]
    [io.aviso.rook :as rook]
    [clojure.tools.logging :as l]))

(defn start-server
  "Starts a server on the named port, and returns a function that shuts it back down."
  [port]
  (let [handler (-> (rook/namespace-handler
                      ["counters" 'org.example.resources.counters])
                    rook/wrap-with-standard-middleware)
        ^Server server (jetty/run-jetty handler {:port port :join? false})]
    (l/infof "Listening on port %d." port)
    #(.stop server)))

(defn main
  []
  (start-server 8080))

关于如何使用环静态资源功能运行,我没有明确的图片:https://github.com/ring-clojure/ring/wiki/Static-Resources

1 个答案:

答案 0 :(得分:1)

我对车不是很熟悉,在快速浏览一下文档和一些代码后,我看不到静态资源。如果这是错误的,请原谅我。

看起来车很多,但最后它仍然给你一个戒指处理程序。因此,您应该能够获取它返回的环处理程序函数,并将其与任何其他环处理程序函数/中间件(例如Ring附带的函数/中间件)结合使用。