2016-04-11 6 views
1

ich zu einem Pedestal Endpunkt „/ my-post POSTed Daten haben Sockel Ich habe das Endpunkt als solche geführt:Abrufen der Körper POST-Daten von einer POST-Anfrage

[[["/" {:get landing} ^:interceptors [(body-params/body-params) ...] 
    ["/my-post {:post mypost-handler} 
    .... 

Dies bedeutet also, meiner Meinung nach ., dass der Körper-params Abfangjäger für/mypost feuern wird

In mypost-Handler ich habe:

(defn mypost-handler 
    [request] 
    ****HOW TO ACCESS THEN FORM DATA HERE **** 
)  

Wie ich jetzt hier die Formulardaten zugreifen ich von Druck der Anfrage sehen kann? dass ich ein #object [org .eclipse.jetty.sever.HttpInputOverHTTP ..], die eindeutig weiter verarbeitet werden müssen, bevor es für mich nützlich ist.

(ich muss sagen, die Dokumentation für Pedestal bestenfalls ziemlich lückenhaft ist ...)

Antwort

2

So etwas sollte funktionieren. Beachten Sie den Körper-Paramter Interceptor auf der Mypost-Handler Route

(defn mypost-handler 
    [{:keys [headers params json-params path-params] :as request}] 
    ;; json-params is the posted json, so 
    ;; (:name json-params) will be the value (i.e. John) of name property of the posted json {"name": "John"} 
    ;; handle request 
    {:status 200 
    :body "ok"}) 

(defroutes routes 
    [[["/mypost-handler" {:post mypost-handler} 
    ^:interceptors [(body-params/body-params)] 
    ] 
    ]]) 
0

Die mypost-handler ist als Handler Ring handeln, i. e. Es sollte eine Ringanforderungskarte akzeptieren und eine Ringantwortkarte zurückgeben. So können Sie eine typische Ring Anforderungsstruktur erwarten:

(defn mypost-handler 
    [{:keys [headers params json-params path-params] :as request}] 
    ;; handle request 
    {:status 200 
    :body "ok"}) 

Here's more relevant info auf solche Handler in Ihrer Route Tabellen definieren.

+0

Danke, aber ich bin immer noch nicht sicher, wie ich tatsächlich die Daten zu bekommen. – Zuriar

Verwandte Themen