2013-06-12 15 views
9

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?

+3

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). –

+0

Patrz także [format pierścienia pośredniego] (https://github.com/ngrunwald/ring-middleware-format). – noahlz

Odpowiedz

3

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.