লারাভেল - এইচটিএসপি স্থিতি কোড সহ রিটার্ন জেসসন


86

আমি যদি কোনও বস্তু ফেরত দিই:

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

স্থিতি কোডটি 200 হবে I আমি কীভাবে এটিকে 201 এ পরিবর্তন করতে পারি, একটি বার্তা দিয়ে এবং এটি জেসন অবজেক্টের সাথে প্রেরণ করতে পারি?

আমি জানি না যে লারাভেলে কেবল স্থিতি কোড সেট করার কোনও উপায় আছে কিনা।

উত্তর:


117

আপনি http_response_code()HTTP প্রতিক্রিয়া কোড সেট করতে ব্যবহার করতে পারেন ।

আপনি যদি কোনও প্যারামিটারগুলি পাস না করেন তবে http_response_code বর্তমান স্থিতি কোডটি পাবে। আপনি যদি কোনও পরামিতি পাস করেন তবে এটি প্রতিক্রিয়া কোড সেট করবে।

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

লারাভেলের জন্য (থেকে রেফারেন্স: https://stackoverflow.com/a/14717895/2025923 ):

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

4
মনে রাখবেন যে সিমফনি \ উপাদান \ এইচটিপিফাউন্ডেশন \ প্রতিক্রিয়া http স্থিতি কোডগুলির জন্য নিজস্ব পূর্বনির্ধারিত স্থিতি রয়েছে এবং আপনি যদি এটির ব্যবহার করেন তবে এটি আপনার স্ট্যাটাসটিকে কাছের কিছুতে পরিবর্তন করবে ... অর্থাৎ আপনি যদি পরিস্থিতি সেট করতে চান 449 , আপনি সর্বদা 500 টি
ম্লাদেন জঞ্জেটোভিচ

4
@ তুষার যদি আমি কোনও তথ্য 200 করেই ফেরত পাঠাতে না চাই তবে কী হবে? কি response()->json([], 200);উদ্দেশ্যে হইয়া এই অবস্থায়? বা 200 জড়িত?
জোনাথন

+ (201) এই উত্তরটি আমার সন্ধ্যা
সাফ করে দেয়

use Illuminate\Http\Response;এবং return new Response(['message' => 'test'], 422);আমার জন্য কাজ করেছেন
ডার্ক জান স্পেলম্যান

65

লারাভেল 5 এ এটিই আমি করি

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

বা কোনও সহায়ক ফাংশন ব্যবহার করে:

return response()->json(['hello' => $value], 201); 

4
@ টাইমনোমড এই দুটি পদ্ধতির পক্ষে কি কি?
ডিজেসি

4
@ ডিজেসি প্রথম পদ্ধতিতে আপনি প্রতিক্রিয়া ব্যবহার করতে সক্ষম হবেন: বেশ কয়েকবার কেবল একবার লোড হচ্ছে। দ্বিতীয় পদ্ধতিতে আপনি প্রতিবার () -> (আপনি কেবলমাত্র একটি ব্যবহার করেন তবে কোনও সমস্যা নেই) ব্যবহার করার সময় আপনি সেই শ্রেণিতে কল করবেন।
মার্সেলো আগিমিভেল

33

আমি মনে করি আপনার প্রতিক্রিয়াটিকে একক নিয়ন্ত্রণে রাখা আরও ভাল অনুশীলন এবং এই কারণেই আমি সর্বাধিক অফিসিয়াল সমাধান খুঁজে পেয়েছি।

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

namespaceঘোষণার পরে এটি যুক্ত করুন :

use Illuminate\Http\Response;

ধন্যবাদ, আমি এটির একটি রেফারেন্স খুঁজছিলাম। আপনি কি কেবলমাত্র ২০০ (এইচটিটিপি_ওকে) নয়, অন্যান্য উপলভ্য প্রতিক্রিয়ার নামের সাথে একটি লিঙ্ক পেয়েছেন? আমি এটি গুগল করার চেষ্টা করেছি তবে এটি এখনও বেশ কিছুটা খুঁজে পাইনি!
jjmu15

4
কিছু নয় ... খুঁজে পেয়েছি। এখানে যে কেউ খুঁজছেন তাদের সম্পূর্ণ তালিকা: gist.github.com/jeffochoa/a162fc4381d69a2d862dafa61cda0798
jjmu15

13

একাধিক উপায় আছে

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

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

যেখানে STATUS_CODE হল এমন একটি HTTP স্থিতি কোড যা আপনি প্রেরণ করতে চান। দুটোই অভিন্ন।

যদি আপনি স্বচ্ছল মডেল ব্যবহার করছেন তবে সাধারণ রিটার্নটি ডিফল্টরূপে JSON এ স্বয়ংক্রিয়ভাবে রূপান্তরিত হবে ,

return User::all();



0

এটা দিয়ে এটা করতে ভালো সাহায্যকারী ফাংশন বদলে ফেসেড । এই সমাধানটি লারাভেল ৫.7 এর পর থেকে ভালভাবে কাজ করবে

//import dependency
use Illuminate\Http\Response;

//snippet
return \response()->json([
   'status' => '403',//sample entry
   'message' => 'ACCOUNT ACTION HAS BEEN DISABLED',//sample message
], Response::HTTP_FORBIDDEN);//Illuminate\Http\Response sets appropriate headers

0

ল্যারাভেল 7.. * এটি আপনাকে স্বয়ংক্রিয়ভাবে এটি JSON এ রূপান্তরিত করায় আপনাকে JSON RESPONSE এর বক্তব্য দিতে হবে না

return response(['Message'=>'Wrong Credintals'], 400);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.