[英]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.