簡體   English   中英

Clojure 規范,用於 map 中的單個鍵

[英]Clojure spec for a single key in a map

我正在指定來自Google 日歷 API的 http 響應,並且我希望每種響應類型都有不同的規格。

我已經為 HTTP 響應定義了一個規范

(s/def ::http-resp
  (s/keys :req-un [:status] :opt-un [:body]))

但是如何為每個 HTTP 狀態定義規范? 我知道我可以做到:s.http-error-401/status ,但我更喜歡類似的東西

(s/and ::http-response 
       (key-in-a-map :status :s.http-statuses.error/gone))

也許有 HTTP 響應的良好規格示例? 到目前為止,我只找到了ring-spec

IMO ring-spec已經為您服務。 您可以在此處找到 HTTP 狀態的規范:

(s/def :ring.response/status (s/int-in 100 600))

請注意,HTTP 狀態碼是一個數字。 如果您需要微調規范,您可以隨時執行以下操作:

(def ^:const OK 200)
(def ^:const UNAUTHORIZED 401)

(s/def ::status #{OK UNAUTHORIZED})

(s/def ::body string?)

(s/def ::response (s/keys :req-un [::status] :opt [::body]))

(s/valid? ::response {:status 200
                      :body   "Hello"})
;; => true


(s/valid? ::response {:status 1000
                      :body   "Hello"})
;; => false

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM