nasıl

2012-11-13 1 views
13
case GET(Path("/rtb_v1/bidrequest")) => Action { implicit request => 

Ben yukarıdaki istek nesnesini almak ve form post gönderilen anahtar/değer çiftleri tüm almak ve harita içine düzleştirmek istiyorum [dize, dize]nasıl

Play tüm istek parametrelerini almak ve Scala için

i tüm belgeler geçirdi ve ölü sonunda çıkmış bulunuyorum.

Bu güzel bir Java/Servlet I kolay heyecanlanıyorum edilir; m yerde bu gibi basit bir şey üzerinde hiçbir belge yoktur niçin merak .. request.getParamterMap ait

Map<String, String[]> parameters = request.getParameterMap(); 

cevap

25

Play'in eşdeğer bir Map[String, Seq[String]] döndüren request.queryString olduğunu. Sen .. Kim o, ben şahsen bir işlev gibi kullanmak yapma yönteminin bir alternatif olarak

request.queryString.map { case (k,v) => k -> v.mkString } 

And here is the documentation.

+1

eser .. ben –

+0

sen queryString şimdi atayabilir flatmap çözümlerine kıyasla onun biraz daha etkileyici bu kodu gibi başka bir istek ve nasıl? –

+0

vay .. Ben size 'map'' case' bir 'map [dize, dize]' dönebilirsiniz nasıl açıklayan misin, scala yeni am? – Zennichimaro

9

ile Map[String, String] bunu dümdüz

def param(field: String): Option[String] = 
    request.queryString.get(field).flatMap(_.headOption) 
1

Olmayacak istek POST yöntemini kullanıyorsa işe yarar. Aşağıdaki kod kullanılabilir:

req.body match { 
    case AnyContentAsFormUrlEncoded(params) ⇒ 
    println(s"urlEncoded = $params") 
    case mp @ AnyContentAsMultipartFormData(_) ⇒ 
    println(s"multipart = ${mp.asFormUrlEncoded}") 
} 
0

Aşağıdaki kullanmanız gerekebilir:

request.queryString.map { case (k,v) => k -> v.mkString }).toSeq: _*