【问题标题】:How to serve static resources in Yada雅达如何服务静态资源
【发布时间】:2019-09-09 09:52:52
【问题描述】:

使用 Compojure,我可以像这样提供静态资源:

(defroutes routes
  (route/resources "/"))

按照雅达文档我有这个工作:

(def server
  (listener
    ["/"
     [["hello" (as-resource "Hello World!")]
      ["test" (resource {:produces "text/plain"
                         :response "This is a test!"})]
      [true (as-resource nil)]]]
    {:port 3000}))

但是如何让雅达从文件系统中提供资源呢?

【问题讨论】:

    标签: clojure yada


    【解决方案1】:

    我最终在这里找到了答案:Wrapping resource handlers with bidi

    (ns yada-test
      (:require [yada.yada :refer [listener as-resource]]
                [bidi.ring :refer [resources]]))
    
    (def server
      (listener
        ["/"
         [["" (resources {:prefix "public/"})]]]
        {:port 3001}))
    

    【讨论】:

      【解决方案2】:

      尝试以下方法:

      (ns yada-test
        (:require [clojure.java.io :as io]
                  [yada.yada :refer [listener as-resource]]]))
      
      (def server
        (listener
          ["/"
           [["talks" (as-resource (io/file (io/resource "docs")))]
            [true (as-resource nil)]]]
          {:port 3001}))
      

      您需要将资源目录添加到您的类路径并在其中创建docs 文件夹。

      【讨论】:

      • 如果我执行curl localhost:3001/talks,这允许我获取docs 的内容列表,但它不允许我执行例如curl localhost:3001/talks/index.html (404)。有没有办法公开docs 目录中的所有内容?
      猜你喜欢
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 2014-05-29
      • 2011-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多