swagger1st和friboo

swagger1st

swagger1st庫提供了符合Ring規(guī)范的handler,能夠根據(jù)Swagger定義解析、驗證、路由HTTP請求。

使用swagger1st,不是在代碼中定義API,而是利用Swagger官方的編輯器根據(jù)Swagger 2.0規(guī)范定義API。這樣產(chǎn)生了一種API優(yōu)先的開發(fā)流程,并且是使用獨(dú)立于任何開發(fā)語言的方式定義API。

friboo

friboo提供了一些component,用于輔助Clojure的微服務(wù)應(yīng)用開發(fā)。friboo鼓勵采用swagger1st實行API優(yōu)先的開發(fā)方式。

HTTP component

使用def-http-component宏創(chuàng)建HTTP component。http組件啟動時,內(nèi)部調(diào)用swagger1st創(chuàng)建handler,并使用jetty適配器運(yùn)行之。

(ns myapi
  (:require [org.zalando.stups.friboo.system.http :refer [def-http-component]))

(def-http-component MyAPI "my-api.yaml" [db scheduler])

(defn my-api-function [parameters request db scheduler]
  ; 這里能夠使用依賴的db和scheduler組件
  )

上面的代碼創(chuàng)建了MyAPI組件,依賴于db和scheduler組件。my-api-function函數(shù)的第一個參數(shù)是一個扁平的map,對應(yīng)的Swagger規(guī)范的parameters。

http組件使用:configuration存放配置項,在啟動組件時用到它,例如

(map->MyAPI {:configuration {:port        8080
                             :cors-origin "*.zalando.de"}})

推薦采用下面的方式創(chuàng)建一個http系統(tǒng)。

(ns my-app.core
  (:require [org.zalando.stups.friboo.config :as config]
            [org.zalando.stups.friboo.system :as system]))

(defn run
  [default-configuration]
  (let [configuration (config/load-configuration
                        (system/default-http-namespaces-and :db)
                        [my-app.sql/default-db-configuration
                         my-app.api/default-http-configuration
                         default-configuration])
        system (system/http-system-map configuration
                                       my-app.api/map->API [:db]
                                       :db (my-app.sql/map->DB {:configuration (:db configuration)}))]

    (system/run configuration system)))

DB component

使用def-db-component宏創(chuàng)建。DB組件本質(zhì)上是一個兼容db-spec的數(shù)據(jù)結(jié)構(gòu),使用:datasource存放數(shù)據(jù)源。

(ns mydb
  (:require [org.zalando.stups.friboo.system.db :refer [def-db-component]))

(def-db-component MyDB)

與http組件類似,db組件使用:configuration存放配置項,在啟動組件時用到。

(map->MyDB {:configuration {:subprotocol "postgresql"
                            :subname     "localhost/mydb"}})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,810評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,836評論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,925評論 6 342
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,180評論 4 61
  • 這么多坍塌的謊言 這么多兒童在森林流浪 這么多空曠的堅持 這么多白云在無力支撐 你是個在冬天開花,春天結(jié)果的老騙子...
    蘇蘇諾閱讀 211評論 5 11