Ho letto la specifica edn e voglio integrarla nella mia applicazione. Tuttavia, non so come trasferire le richieste di edn tra clojure e client. Inseriamo un'applicazione/edn del tipo di contenuto nell'intestazione della risposta e inviamo semplicemente la stringa di output prn?Esiste una sorta di risposta edn canonica che possiamo usare per l'anello?
risposta
Anche se non è ancora stato accettato da IANA (14 giugno 2013), il corretto tipo di contenuto è application/edn
. Per fornire una stringa valida per l'oggetto clojure, utilizzare (pr-str obj)
. Per un servizio web, il metodo di codifica e decodifica dipende dal tuo framework web e dalle tue esigenze.
Pedestal supporta l'analisi di edn in una chiave :edn-params
nella sua mappa richiesta tramite l'utilizzo dell'intercettore body-params
. L'invio di oggetti clojure come edn viene gestito automaticamente se i vostri corpi di risposta non sono stringhe. Per la negoziazione del contenuto, vedere pedestal-content-negotiation.
Per il middleware ad anello, ring-edn analizza edn in una chiave :edn-params
, ma non esegue alcuna modifica in uscita. ring-middleware-format fornisce l'analisi di una manciata di formati diversi nella chiave :body-params
e ha una raccolta di middleware che può essere utile anche per le risposte. Ci sono una manciata di altri progetti di middleware come questo.
Forse questo progetto di fogus può darti un punto di partenza o una guida: [ring-edn] (https://github.com/fogus/ring-edn). –
Vedere anche [anello-middleware-format] (https://github.com/ngrunwald/ring-middleware-format). – noahlz