Clojure,Compojure:如何将Ring中间件CORS添加到基于环形适配器码头的项目?

时间:2017-07-27 06:14:18

标签: clojure jetty compojure ring compojure-api

我在我的compojure api项目中使用环形适配器jetty服务器。现在我想将环中间件CORS添加到我的项目中。我应该如何添加以及在我的项目中应该在哪里添加环中间件CORS?

这些是我的项目代码片段

API

(ns clojure-dauble-business-api.core
  (:require [compojure.api.sweet :refer :all]
            [ring.util.http-response :refer :all]
            [clojure-dauble-business-api.logic :as logic]
            [clojure.tools.logging :as log]
            [clojure-dauble-business-api.domain.artwork]
            [cheshire.core :as json])
  (:import [clojure_dauble_business_api.domain.artwork Artwork]))


(defapi app
  (GET ["/hello/:id", :id #"[0-9]+"] [id :as request]
    (log/info "Function begins from here" request)
    (def jsonString (json/generate-string (get-in request [:headers])))
    (log/info "Create - header value is " (get-in (json/parse-string jsonString true) [:accesstoken]))
    (def artworkData (logic/artwork-id (->> id (re-find #"\d+") Long/parseLong)))
    (def data (if (not-empty artworkData)
               {:data artworkData :status 200}
               {:data [] :status 201}))
   (ok data)))

在Jetty上运行api的方法

(ns clojure-dauble-business-api.routes
    (:require [compojure.core :refer :all]
              [ring.adapter.jetty :as jetty]
              [ring.middleware.cors :refer [wrap-cors]]
             (clojure-dauble-business-api [core :as core]
                                          [test :as t])))
(def app
 (routes core/app t/test))


(jetty/run-jetty app {:port 3000})

此处core/app是上述API函数路径,t/test是另一个API函数(我这里没有提供代码)。

0 个答案:

没有答案