Esiste un modo per accedere a tutti i parametri di richiesta, indipendentemente dal metodo HTTP? Ho riversato la documentazione e l'api senza trovare un modo in Play Framework 2.0.Request.params è andato in Play Framework 2.0
Ho una ricerca su un sito che accetta POST e GET. Il tracciamento personalizzato sul sito esamina tutti i parametri passati per determinare il modo corretto di memorizzare i dati di tracciamento.
Nel 1.2.x Riproduzione quadro, sono stato in grado di accedere ai parametri da una richiesta in un controller con
request.params.get("keywords")
request.params.get("location")
request.params.all()
del gioco con il Framework 2.0, questo non è più il caso. Il Request non ha più il metodo params
, solo queryString
e queryString funziona solo con GET e non con POST.
Non è possibile definire ogni singolo parametro di tracciamento nell'azione Controller, sono dinamici.
UPDATE: Una possibile aggirare sta usando Body Parsers.
A seconda del tipo di contenuto della richiesta, viene utilizzato il parser appropriato, ad es. application/form-codifica URL vs application/json
Questa è la cruda mappa che combina parametri POST e GET parametri, con i parametri GET che prendono la precedenza.
val params: collection.mutable.Map[String, Seq[String]] = collection.mutable.Map()
params ++= request.body.asFormUrlEncoded.getOrElse[Map[String, Seq[String]]] { Map.empty }
params ++= request.queryString
Azione (parse.fooContentType) {...} è abbastanza utile, grazie per il collegamento Body parsers! – virtualeyes
La tua risposta dovrebbe essere divisa in risposta, non come una modifica della domanda originale. –
Speravo in una risposta corretta supportata dall'API invece della rozza correzione che ho funzionato in questo momento – mguymon