2015-01-21 15 views
10

मैं स्लिम ढांचे में सिर्फ एक नौसिखिया हूँ। मैंने स्लिम फ्रेमवर्क का उपयोग करके एक एपीआई लिखा है।स्लिम में POST अनुरोध के JSON अनुरोध निकाय का उपयोग कैसे करें?

आईफोन ऐप से इस एपीआई में एक POST अनुरोध आ रहा है। यह पोस्ट अनुरोध JSON प्रारूप में है।

लेकिन मैं आईफोन से अनुरोध में भेजे गए POST पैरामीटर तक पहुंच नहीं पा रहा हूं। जब मैंने POST पैरामीटर के मानों को मुद्रित करने का प्रयास किया तो मुझे प्रत्येक पैरामीटर के लिए "शून्य" मिला।

$allPostVars = $application->request->post(); //Always I get null 

तब मैं, एक आने वाले अनुरोध के शरीर मिल JSON प्रारूप में शरीर में परिवर्तित करने की कोशिश की और iPhone के लिए एक प्रतिक्रिया के रूप में यह वापस भेज दिया। तब मैं पैरामीटर 'मान गए लेकिन इस रूप में वे बहुत ही अजीब प्रारूप में हैं:

"{\"password\":\"admin123\",\"login\":\"[email protected]\",\"device_type\":\"iphone\",\"device_token\":\"785903860i5y1243i5\"}" 

तो यकीन है कि के लिए एक बात पोस्ट अनुरोध पैरामीटर इस एपीआई फाइल करने के लिए आ रहे हैं। हालांकि वे $application->request->post() में पहुंच योग्य नहीं हैं, वे अनुरोध निकाय में आ रहे हैं।

मेरा पहला मुद्दा यह है कि मैं अनुरोध निकाय से इन POST पैरामीटर को कैसे एक्सेस कर सकता हूं और मेरा दूसरा मुद्दा यह है कि अनुरोध डेटा को जेएसओएन प्रारूप में परिवर्तित करने के बाद उपरोक्त के रूप में ऐसे अजीब प्रारूप में प्रदर्शित किया जा रहा है?

$paramValue = $application->request->params('paramName'); 

या

$paramValue = $application->request->post('paramName'); 

अधिक:

<?php 

    require 'Slim/Slim.php';  

    \Slim\Slim::registerAutoloader(); 

    //Instantiate Slim class in order to get a reference for the object. 
    $application = new \Slim\Slim(); 

    $body = $application->request->getBody(); 
    header("Content-Type: application/json");//setting header before sending the JSON response back to the iPhone 
    echo json_encode($new_body);// Converting the request body into JSON format and sending it as a response back to the iPhone. After execution of this step I'm getting the above weird format data as a response on iPhone. 
    die; 
?> 
+0

संभव डुप्लिकेट (http://stackoverflow.com/questions/26346960/how-to-get-the-post-request-entity-using- [कैसे पोस्ट अनुरोध स्लिम framwork का उपयोग कर इकाई पाने के लिए] स्लिम-फ्रेमवर्क) – guillermoandrae

उत्तर

28

सामान्य शब्दों में, आप व्यक्तिगत रूप से दो में से एक तरीके POST मापदंडों का उपयोग कर सकते हैं:

के बाद आवश्यक कोड का टुकड़ा है जानकारी प्रलेखन में उपलब्ध है: http://docs.slimframework.com/#Request-Variables

JSON एक POST में भेजा जाता है, उदाहरण के लिए अनुरोध शरीर से जानकारी का उपयोग करने, है:

$app->post('/some/path', function() use ($app) { 
    $json = $app->request->getBody(); 
    $data = json_decode($json, true); // parse the JSON into an assoc. array 
    // do other tasks 
}); 
+0

मैंने $ एप्लिकेशन-> अनुरोध-> पैराम्स ('paramName') के साथ प्रयास किया; साथ ही $ allPostVars = $ application-> अनुरोध-> पोस्ट ('paramName); लेकिन फिर भी मुझे कोई POST अनुरोध चर नहीं मिला। केवल $ body = $ application-> अनुरोध-> getBody() के बाद; मुझे POST अनुरोध डेटा मिल रहा है। –

+2

आह मैं अब समझता हूं। फिर यह इसका एक डुप्लिकेट है: http: // stackoverflow।कॉम/प्रश्न/26346960/कैसे-टू-द-पोस्ट-अनुरोध-इकाई-उपयोग-स्लिम-फ़्रेमवर्क – guillermoandrae

+2

विस्तार करने के लिए: आपको अनुरोध को पार्स करने के लिए अनुरोध निकाय पर 'json_decode' का उपयोग करने की आवश्यकता होगी और प्राप्त करें सूचना। – guillermoandrae

5

"स्लिम बॉक्स से बाहर JSON, XML, और URL- एनकोडेड डेटा पार्स कर सकते हैं "- http://www.slimframework.com/docs/objects/request.html" अनुरोध निकाय "के तहत।

किसी भी शरीर के रूप में अनुरोध को संभालने का सबसे आसान तरीका "getParsedBody()" के माध्यम से है। यह guillermoandrae उदाहरण क्या करेंगे लेकिन के बजाय 2.

उदाहरण 1 लाइन पर:

$allPostVars = $application->request->getParsedBody(); 

तो फिर तुम दिया सरणी में उनके प्रमुख द्वारा कोई पैरामीटर पहुँच सकते हैं।

$someVariable = $allPostVars['someVariable']; 
की
+0

इसके लिए Thx, यह वास्तव में सबसे आसान तरीका है। –

संबंधित मुद्दे