मैं एक साधारण एपीआई लिख रहा हूं, और इस एपीआई के शीर्ष पर एक साधारण वेब एप्लिकेशन बना रहा हूं।मैं लैरवेल 4 में मैन्युअल रूप से प्रेषित अनुरोधों के लिए क्वेरी स्ट्रिंग पैरामीटर का उपयोग कैसे कर सकता हूं?
क्योंकि मैं "मेरे अपने एपीआई का उपभोग" करना चाहते हैं सीधे, मैं पहली बार Google पर और जो मेरे प्रारंभिक सवाल पूरी तरह से जवाब देती है StackOverflow पर इस जवाब मिला: अब Consuming my own Laravel API
, इस महान काम करता है, मैं उपयोग करने में सक्षम हूँ मेरी कुछ ऐसा करके एपीआई:
$request = Request::create('/api/cars/'.$id, 'GET');
$instance = json_decode(Route::dispatch($request)->getContent());
यह बहुत अच्छा है!
http://cars.com/api/cars/1?fields=id,color
अब जिस तरह से मैं वास्तव में इस एपीआई में संभाल: लेकिन, मेरे API आपको एक वैकल्पिक क्षेत्रों इस जैसे विशिष्ट विशेषताओं है कि वापस आ जाना चाहिए, यह निर्दिष्ट करने के प्राप्त क्वेरी स्ट्रिंग पैरामीटर जोड़ने की अनुमति देता
public function show(Car $car)
{
if(Input::has('fields'))
{
//Here I do some logic and basically return only fields requested
....
...
}
मुझे लगता है के रूप में मैंने पहले, कुछ इस तरह क्वेरी स्ट्रिंग पैरामीटर कम दृष्टिकोण के साथ किया था मैं कुछ इसी तरह कर सकता है कि:
$request = Request::create('/api/cars/' . $id . '?fields=id,color', 'GET');
$instance = json_decode(Route::dispatch($request)->getContent());
इस की तर्ज पर कुछ है
लेकिन, ऐसा नहीं लगता है। लंबी कहानी संक्षेप में, कोड के माध्यम से कदम के बाद ऐसा लगता है कि Request
वस्तु सही ढंग से बनाई गई है (और इसे सही ढंग क्षेत्रों पैरामीटर बाहर खींचती है और इसे करने के लिए आईडी, रंग प्रदान करती है), और मार्ग भेज दिया करने के लिए ठीक लगता है, लेकिन मेरे एपीआई नियंत्रक के भीतर ही मुझे नहीं पता कि फ़ील्ड पैरामीटर का उपयोग कैसे करें। Input::get('fields')
का उपयोग करना (जो मैं "सामान्य" अनुरोधों के लिए उपयोग करता हूं) कुछ भी नहीं देता है, और मैं निश्चित रूप से निश्चित हूं क्योंकि स्थिर Input
प्रारंभिक अनुरोध में संदर्भित या स्कॉइंग कर रहा है, नया अनुरोध मैंने "मैन्युअल रूप से" प्रेषित नहीं किया ऐप के भीतर ही।
तो, मेरा सवाल वास्तव में मुझे यह कैसे करना चाहिए? क्या मुझसे कुछ गलत हो रही है? आदर्श रूप में मैं अपने एपीआई नियंत्रक में कुछ भी बदसूरत या विशेष से बचना चाहता हूं, मैं इनपुट :: आंतरिक रूप से प्रेषित अनुरोधों के लिए प्राप्त करने के लिए सक्षम होना चाहता हूं और दूसरी जांच नहीं करना चाहता हूं, आदि
एक बात ध्यान में रखना है यहां एक आंतरिक अनुरोध की संभावना है जो एक और आंतरिक अनुरोध बुला रही है। आपको अनुरोधों का ढेर रखने और मूल इनपुट को स्टोर करने की आवश्यकता हो सकती है, फिर स्टैक से अंतिम अनुरोध पॉप करें और तदनुसार इनपुट को प्रतिस्थापित करें। –
हेडर को बनाए गए अनुरोध में संलग्न करने का कोई तरीका (उदाहरण के लिए अनुरोध के साथ सार्वजनिक एपीआई कुंजी भेजने के लिए)? जानकारी के लिए – whonoes