2015-06-30 6 views
33

अगर मैं एक ऑब्जेक्ट:Laravel - http स्थिति कोड के साथ json लौटें

return Response::json([ 
    'hello' => $value 
]); 

स्थिति कोड 200 हो जाएगा मैं इसे कैसे 201 को बदल सकते हैं, एक संदेश के साथ और json वस्तु के साथ भेज देते हैं ?।

मुझे नहीं पता कि लैरावेल में स्टेटस कोड सेट करने का कोई तरीका है या नहीं।

उत्तर

53

आप HTTP प्रतिक्रिया कोड सेट करने के लिए http_response_code() का उपयोग कर सकते हैं।

यदि आप कोई पैरामीटर पास नहीं करते हैं तो http_response_code वर्तमान स्थिति कोड प्राप्त करेगा। यदि आप पैरामीटर पास करते हैं तो यह प्रतिक्रिया कोड सेट करेगा।

http_response_code(201); // Set response status code to 201 

Laravel (से संदर्भ: https://stackoverflow.com/a/14717895/2025923): के लिए

return Response::json([ 
    'hello' => $value 
], 201); // Status code here 
+1

ध्यान रखें कि ** Symfony \ घटक \ HttpFoundation \ रिस्पांस ** है http स्थिति कोड के लिए अपने स्वयं के पूर्वनिर्धारित स्थिरांक, और यदि आप के अलावा अन्य का उपयोग कि यह आपकी स्थिति को इसके करीब किसी चीज़ में बदल देगा ... यानी यदि आप स्थिति ** 44 9 ** सेट करना चाहते हैं, तो आपको हमेशा स्थिति मिल जाएगी ** 500 ** –

+2

@ तुषार क्या होगा यदि मैं कोई भी भेजना नहीं चाहता डेटा वापस, सिर्फ 200 प्रतिक्रिया? क्या प्रतिक्रिया है() -> जेसन ([], 200); 'इस स्थिति में उद्देश्य के लिए उपयुक्त है? या 200 निहित है? – Jonathan

+0

+ (201) यह उत्तर मेरी शाम को सुरक्षित करता है :) –

26

यह मैं कैसे Laravel में ऐसा है 5

return Response::json(['hello' => $value],201); 
+15

या कक्षा आयात किए बिना प्रतिक्रिया सहायक का उपयोग करना: वापसी प्रतिक्रिया() -> जेसन (['हैलो' => $ मूल्य], 201); –

+1

@timeNomad इन दो तरीकों के पेशेवरों और विपक्ष क्या हैं - जिसकी सिफारिश की जाती है? – DJC

2

वहाँ कई तरीके

return \Response::json(['hello' => $value], STATUS_CODE); 

return response()->json(['hello' => $value], STATUS_CODE); 
हैं

जहां STATUS_CODE आपका HTTP स्टेटस कोड है जिसे आप भेजना चाहते हैं। दोनों समान हैं।

अगर आप सुवक्ता मॉडल का उपयोग कर रहे हैं, तो सरल वापसी भी ऑटो डिफ़ॉल्ट रूप से की तरह JSON में परिवर्तित,

return User::all(); 
+1

'$ प्रतिक्रिया() 'एक त्रुटि का कारण बन जाएगा। यह 'प्रतिक्रिया() 'होना चाहिए – Amr

7

हो जाएगा मुझे लगता है कि यह बेहतर अभ्यास है एकल नियंत्रण में है और इस के लिए आपकी प्रतिक्रिया रखने के लिए कारण मुझे सबसे आधिकारिक समाधान मिला।

response()->json([...])->setStatusCode(Response::HTTP_OK, Response::$statusTexts[Response::HTTP_OK]); 

namespace घोषणा के बाद इस जोड़ें:

use Illuminate\Http\Response; 
संबंधित मुद्दे