ถ้าฉันส่งคืนวัตถุ:
return Response::json([
'hello' => $value
]);
รหัสสถานะจะเป็น 200 ฉันจะเปลี่ยนเป็น 201 พร้อมข้อความและส่งด้วยวัตถุ json ได้อย่างไร?
ฉันไม่รู้ว่ามีวิธีตั้งรหัสสถานะใน Laravel ได้ไหม
ถ้าฉันส่งคืนวัตถุ:
return Response::json([
'hello' => $value
]);
รหัสสถานะจะเป็น 200 ฉันจะเปลี่ยนเป็น 201 พร้อมข้อความและส่งด้วยวัตถุ json ได้อย่างไร?
ฉันไม่รู้ว่ามีวิธีตั้งรหัสสถานะใน Laravel ได้ไหม
คำตอบ:
คุณสามารถใช้http_response_code()
เพื่อตั้งรหัสตอบกลับ HTTP
หากคุณไม่ส่งพารามิเตอร์ 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
response()->json([], 200);
เหมาะสมกับวัตถุประสงค์ในสถานการณ์เช่นนี้? หรือ 200 นัย?
use Illuminate\Http\Response;
และreturn new Response(['message' => 'test'], 422);
ทำงานให้ฉัน
นี่คือวิธีที่ฉันทำใน Laravel 5
return Response::json(['hello' => $value],201);
หรือใช้ฟังก์ชันตัวช่วย:
return response()->json(['hello' => $value], 201);
ฉันคิดว่าเป็นแนวทางปฏิบัติที่ดีกว่าที่จะให้คำตอบของคุณอยู่ภายใต้การควบคุมเพียงครั้งเดียวและด้วยเหตุนี้ฉันจึงค้นพบวิธีแก้ปัญหาที่เป็นทางการที่สุด
response()->json([...])
->setStatusCode(Response::HTTP_OK, Response::$statusTexts[Response::HTTP_OK]);
เพิ่มสิ่งนี้หลังจากnamespace
การประกาศ:
use Illuminate\Http\Response;
มีหลายวิธี
return \Response::json(['hello' => $value], STATUS_CODE);
return response()->json(['hello' => $value], STATUS_CODE);
โดยที่ STATUS_CODE คือรหัสสถานะ HTTP ที่คุณต้องการส่ง ทั้งสองเหมือนกัน
หากคุณใช้ Eloquent model การส่งคืนแบบธรรมดาจะถูกแปลงโดยอัตโนมัติใน JSONตามค่าเริ่มต้นเช่น
return User::all();
return response(['title' => trans('web.errors.duplicate_title')], 422); //Unprocessable Entity
หวังว่าคำตอบของฉันจะเป็นประโยชน์
ฉันชอบตัวช่วยตอบสนองด้วยตัวเอง:
return response()->json(['message' => 'Yup. This request succeeded.'], 200);
มันจะดีกว่าที่จะทำกับฟังก์ชั่นผู้ช่วยมากกว่าFacades โซลูชันนี้จะทำงานได้ดีตั้งแต่Laravel 5.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
laravel 7. * คุณไม่จำเป็นต้องพูดออกเสียง JSON RESPONSEเพราะจะถูกแปลงเป็นJSONโดยอัตโนมัติ
return response(['Message'=>'Wrong Credintals'], 400);