2011-12-23 14 views
12

में एक पोस्ट से पेलोड कैसे प्राप्त करें मैं Play 2.0 (स्कैला) के साथ एक आरईएसटी एपीआई लागू करने की कोशिश कर रहा हूं लेकिन मैं पोस्ट विधि में फंस रहा हूं। मैं अनुरोध ऑब्जेक्ट से पेलोड कैसे प्राप्त करूं? मुझे इसके बारे में कोई दस्तावेज नहीं मिला है और स्रोत कोड से पता लगाने में असमर्थ रहा है।Play 2.0

+0

HTTP क्रिया के लिए URL बाध्यकारी और उसके बाद सीधे अपने वस्तु का उपयोग करने में सक्षम है द्वारा यह आदमी पहुँच पोस्ट: http://www.jamesward.com/2011/12/11/tutorial-play-framework- jpa-json-jquery-heroku –

+0

@ user309483 फिलहाल, मुझे पेलोड से बीन्स से किसी भी निहित बाध्यकारी की आवश्यकता नहीं है, वैसे भी, लिंक के लिए धन्यवाद, यह उपयोगी हो सकता है :) – jglatre

उत्तर

8

आप निम्न कार्य करने में सक्षम होना चाहिए: मैं इसे कुछ अलग करना था

def index = Action { request => 
    val name = request.queryString.get("name").flatMap(_.headOption) 
    Ok("Hello " + name.getOrElse("Guest")) 
} 
+0

धन्यवाद, यह काम करता है! मैंने 'println (request.body)' रखा है और मुझे 'AnyContent' (मानचित्र (बॉडी -> लपेटा हुआ ऐप (पेपे), पेपे -> लपेटा हुआ ऐरे (शून्य)) जैसी चीजें मिल रही हैं) ', जो एक अच्छी शुरुआत की तरह दिखता है । – jglatre

1

(शायद मैं के एक नए संस्करण पर हूँ: जैसे

def index = Action { request => 
    val body = request.body 
} 

और भी बातें codebase):

मेरी जावास्क्रिप्ट:

$(document).ready(function(){ 
    $.post("/ping", {one: "one", two: "two" }, 
    function(data){ 
     console.log(data); //returns {"one":"one","two":"two"} 
    }) 
}); 

मेरे मार्ग:

POST /ping controllers.Application.ping() 

मेरे नियंत्रक विधि:

def ping() = Action{ request => 

    val map : Map[String,Seq[String]] = request.body.asFormUrlEncoded.getOrElse(Map()) 

    val one : Seq[String] = map.getOrElse("one", List[String]()) 
    val two : Seq[String] = map.getOrElse("two", List[String]()) 

    Ok( 
    toJson(JsObject(List("one"->JsString(one.first), "two"->JsString(two.first)))) 
) 
} 

मुझे लगता है यह अंतिम संस्करण में बदल जाएगा। (एक परम नाम scala_name साथ

String name = request().body().asFormUrlEncoded().get("java_name")[0]; 
स्केला के लिए

:

7

playlatam

पर this article पर एक नज़र भी जावा के लिए गूगल सूची

पर this question जाँच (एक परम नाम java_name के साथ) है):

def name = request.body.asFormUrlEncoded.get("scala_name")(0) 
+0

लिंक के लिए धन्यवाद! – jglatre

0

एच मैंने जो किया वह है।

val map : Map[String,Seq[String]] = request.body 
val seq1 : Seq[String] = map.getOrElse("socket_id", Seq[String]()) 
val seq2 : Seq[String] = map.getOrElse("channel_name", Seq[String]()) 
val socketId = seq1.head 
val channelName = seq2.head 
संबंधित मुद्दे