Czytałem specyfikację edn i chcę ją zintegrować z moją aplikacją. Nie wiem jednak, jak przenosić żądania edn między clojure a klientem. Czy umieszczamy aplikację/edn typu content w nagłówku odpowiedzi i po prostu wysyłamy łańcuch wyjściowy prn?Czy istnieje jakiś rodzaj kanonicznej odpowiedzi edn, której możemy użyć do dzwonienia?
Odpowiedz
Mimo że nie został jeszcze zaakceptowany przez IANA (14 czerwca 2013 r.), Prawidłowym typem treści jest application/edn
. Aby podać poprawne wyjście łańcuchowe twojego obiektu clojure, użyj (pr-str obj)
. W przypadku usługi internetowej metoda kodowania i dekodowania zależy od struktury sieci i Twoich potrzeb.
Pedestal parsowanie obsługuje EDN w klucz :edn-params
na jego żądanie mapie poprzez wykorzystanie jego body-params
kolektora. Wysyłanie obiektów clojure jako edn jest obsługiwane automatycznie, jeśli twoje ciała odpowiedzi nie są ciągami. Aby zapoznać się z treścią negocjacji, zobacz pedestal-content-negotiation.
W przypadku oprogramowania pośredniego pierścienia ring-edn analizuje edn w kluczu :edn-params
, ale nie wykonuje żadnej modyfikacji wychodzącej. ring-middleware-format zapewnia analizowanie kilku różnych formatów w kluczu :body-params
i zawiera zbiór middleware, które mogą być pomocne również w odpowiedziach. Istnieje kilka innych programów typu middleware takich jak te.
Być może ten projekt przez fogus może dać ci punkt wyjścia lub wskazówki: [ring-edn] (https://github.com/fogus/ring-edn). –
Patrz także [format pierścienia pośredniego] (https://github.com/ngrunwald/ring-middleware-format). – noahlz