Skip to content

Pre & post validation. Exceptions to http errors. Logging.

Per Weijnitz requested to merge github/fork/weipe/develop into develop

Created by: weipe

lein cljfmt fix har skapat en massa diffar som bara är omstuvning av whitespace.

  • Swagger Genom att specificera datatypen på returvärdet för en endpointoperation, så kan Swagger nu visa JSON-schemat för returvärden. Har bara lagt in det på tre endpoints i den publika gruppen än så länge. Datatypen anges med keywordet :return, så här:
(GET "/concept-history-since" []
       :query-params ...
       :summary      "..."
       :return       show-concept-events-schema
       {:body (show-concept-events-since (...

Jag placerade schemadefinitionerna i direkt anslutning till respektive funktion, i fallet ovan direkt i anslutning till definitionen av show-concept-events-since alltså.

  • Datavalidering av input och output Specialformerna :pre och :post:
(defn find-concept-by-preferred-term [term]
  {:pre  [(is (and (not (nil? term)) (> (count term) 0))  "supply a non-empty string argument")]
   :post [(is (not (empty? %)) "no such term")]}
  (d/q find-concept-by-preferred-term-query (get-db) term))

När en validering misslyckas så kastas ett java.lang.AssertionError. Detta fångar i services.clj och omvandlas till ett http-error:

(def service-routes
  (api
   {:exceptions
    {:handlers
     {java.lang.AssertionError (custom-handler response/not-found :error)

(response/not-found representerar 404).

  • Loggning Lade in en början till loggning i services.clj m h a clojure.tools.logging.

Merge request reports